Вася с его сестрой леной увидели на окне 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. output.txt 4 0 1 0 1 5 1 0 0 0 1 _12 3 1 1 1
Код (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.