Вася с его сестрой Леной увидели на окне n горшков с цветами, которые стоят на n позициях, пронумерованных от 1 до n. В каждом горшке растет либо роза, либо фиалка. Ребята захотели расставить горшки с цветами таким образом, что...

Вася с его сестрой Леной увидели на окне n горшков с цветами, которые стоят на n позициях, пронумерованных от 1 до n. В каждом горшке растет либо роза, либо фиалка. Ребята захотели расставить горшки с цветами таким образом, чтобы каждому из них расстановка показалась красивой. Но у них разное представление о красоте: Васе понравится расстановка, если на нечетных позициях будут стоять розы, а Лене — если на четных позициях будут стоять фиалки. Ребята решили действовать сообща, а именно: они по очереди будут менять местами горшки на позициях i и j, причем i и j ребята каждый раз выбирают на свое усмотрение. Помогите ребятам: вычислите, какие действия им нужно совершать. Формат входного файла В первой строке входного файла input.txt записано натуральное число n, не превосходящее 1000. В следующей строке находятся n чисел, i-е равно либо 0 — это означает, что на данной позиции стоит роза, либо 1 — это означает, что на данной позиции стоит фиалка. Формат выходного файла Первая строка выходного файла output.txt должна содержать число -1 если ребятам не удастся достичь расстановки, которая понравится им обоим, либо число k — неотрицательное и не превосходящее n, равное количеству действий, которое необходимо совершить ребятам, чтобы достичь расстановки, которая им обоим понравится. В следующих k строках нужно вывести пары i и j (1 ≤ i ≤ n, 1 ≤ j ≤ n) — действия, которые необходимо совершить ребятам. Первое действие делает Вася, затем Лена, и так по очереди. Пример входных и выходных данных input.txt_______ output.txt 4 0 1 0 1   _______0 5 _____________2 1 0 0 0 1 _______54                              _12 3 1 1 1 _________-1
Гость
Ответ(ы) на вопрос:
Гость
На каждом шаге имеет смысл менять два горшка с разными цветами. Поэтому всё получится, если роз, стоящих на чётных местах, будет столько же, сколько и фиалок на нечётных. При этом если тех и других k, то всего нужно k перестановок. Код (PascalABC.NET 3.2): begin   var n := ReadInteger();   var roses := new integer[n];   var count_roses := 0;   var violets := new integer[n];   var count_violets := 0;   for var i := 1 to n do   begin     if ReadInteger() = i mod 2 then       if i mod 2 = 0 then       begin         roses[count_roses] := i;         inc(count_roses);       end       else       begin         violets[count_violets] := i;         inc(count_violets);       end;   end;   if count_roses = count_violets then   begin     writeln(count_roses);     for var i := 0 to count_roses - 1 do       println(roses[i], violets[i]);   end   else     write(-1) end.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы