Fişierul intrare/ieşire:bitsort.in, bitsort.outSursăad-hoc
AutorTudor MuresanAdăugată decypryCiprian Oprisa cypry
Timp execuţie pe test0.05 secLimită de memorie16384 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Reordonarea șirurilor de biți

Se cere să se reordoneze un şir de biţi specificat. Singura operaţie permisă este interschimbarea unei perechi de biţi adiacenţi. Scrieţi un program care să calculeze numărul minim de interschimbări necesare.

Şirul iniţial de biţi este reprezentat de o secvenţă de biţi, pe când şirul ţintă (final) este dat prin codul lungimilor. Codul lungimilor unui şir de biţi este secvenţa de lungimi ale numărului maximal de 0 sau 1 în şirul de biţi. De exemplu codul lungimilor şirului '011100' este '1 3 2'. De remarcat că există două şiruri de biţi diferite cu acelaşi cod al lungimilor, unul începând cu 0, iar celălalt cu 1, şirul ţintă fiind oricare dintre ele.

În primul exemplu şirul de biţi '100101' trebuie reordonat astfel încât să aibă codul lungimilor '1 3 2', ceea ce înseamnă fie '011100', fie '100011'. Pentru '011100' sunt necesare 4 interschimbări, iar pentru '100011' doar o singură interschimbare, deci răspunsul este 1.

Date de intrare

Fişierul de intrare bitsort.in conţine mai multe linii de test. Fiecare exemplu de test este format din trei linii. Prima linie conţine doi întregi N şi M separaţi printr-un spaţiu. Pe linia următoare este dat şirul de biţi b1, b2, ..., bN, ca valori de 0 şi 1 separate prin spaţiu. Pe a treia linie a fiecărui test este dat codul lungimilor p1, p2, ..., pM.

Fişierul se termină cu o linie care conţine doar valoarea 0.

Date de ieşire

În fişierul de ieşire bitsort.out se va afişa pentru fiecare exemplu de test câte o linie care conţine un singur întreg reprezentând numărul minim de interschimbări cerut.

Restricţii

  • 0 ≤ M ≤ N ≤ 15
  • 0 ≤ bi ≤ 1
  • p1 + p2 + ... + pM = N
  • numărul de teste din fişierul de intrare este cel mult 50

Exemplu

bitsort.inbitsort.out
6 3
1 0 0 1 0 1
1 3 2
7 2
1 1 1 0 0 0 0
4 3
15 14
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 1 1 1 1 1 1 1 1 1 1 1 2
0
1
12
7
Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?