FMI NO STRESS 12 | Light bulbs

This was the problem page during the contest. Access the current page here.
Time limit: 0.1s Memory limit: 64MB Input: Output:

După ce a petrecut ca un student adevărat la balul bobocilor, Armando ajunge acasă aproape de zorii zilei și, după ce își încuie ușa (ca orice om responsabil), se culcă. Acesta se trezește la lăsarea serii și realizează că a aprins mai multe becuri dimineață în timp ce se chinuia să ajungă în pat. Din păcate, Armando trăiește într-un palat, așa că el are NN întrerupătoare și NN becuri (unele aprinse, altele stinse). Totuși, deși este bogat, nu a reușit să găsească un electrician priceput, așa că, numerotând întrerupătoarele crescător de la stânga la dreapta, întrerupătorul ii schimbă starea sa și a tuturor becurilor din dreapta lui. Formal, odată apăsat întrerupătorul ii, acesta schimbă starea becurilor i,i+1,i+2,,Ni, i+1, i+2, \dots, N. Dacă un bec era aprins, acesta se stinge, iar dacă el era stins, acesta se aprinde.

Cerință

Armando, fiind încă amețit după petrecerea de aseară, vă cere ajutorul și de această dată. El vă roagă să îi spuneți un mod de a stinge toate becurile apăsând pe un număr minim de întrerupătoare.

Date de intrare

Pe prima linie se găsește un număr natural, NN (cu semnificația din enunț). Pe următoarea linie se află NN elemente cu valori de 00 sau 11. Dacă al ii-lea element, de la stânga la dreapta, este 00, atunci al ii-lea bec este stins. Analog, dacă al ii-lea element este 11, becul este aprins.

Date de ieșire

Pe prima linie se va găsi numărul minim de întrerupătoare pe care Armando ar trebui să le apese pentru a stinge toate becurile, iar pe a doua linie se vor afișa indicii acestor întrerupătoare, în ordinea în care acestea trebuie apăsate. Dacă există mai multe soluții cu număr minim de apăsări de întrerupătoare, se poate afișa oricare.

Restricții și precizări

  • 1N100 0001 \leq N \leq 100 \ 000;
  • Cel puțin un bec este aprins;
  • Pentru 3232 de puncte, se garantează că 1N10001 \leq N \leq 1000;
  • Pentru restul de 6868 de puncte, nu există restricții suplimentare.

Exemplu

stdin

8
1 0 1 0 1 1 0 0

stdout

6
1 2 7 4 5 3

Explicație

Pentru a stinge toate becurile, el trebuie să apese, pe rând, pe întrerupătoarele 11, 22, 77, 44, 55 și 33.
Înainte de a apăsa vreun întrerupător becurile arată în modul următor:

După ce apasă pe întrerupătorul 11, becurile vor arăta în modul următor:

După ce apasă pe întrerupătorul 22, becurile vor arăta în modul următor:

După ce apasă pe întrerupătorul 77, becurile vor arăta în modul următor:

După ce apasă pe întrerupătorul 44, becurile vor arăta în modul următor:

După ce apasă pe întrerupătorul 55, becurile vor arăta în modul următor:

După ce apasă pe întrerupătorul 33, becurile vor arăta în modul următor:

Log in or sign up to be able to send submissions!