La o bancă se află seifuri, ale căror coduri de acces secrete sunt numere naturale (să notăm cu şirul codurilor de acces). Datorită producerii unui incident, au fost făcute publice nişte coduri asemănătoare cu codurile secrete (să notăm cu şirul codurilor asemănătoare). Din motive de creştere a securităţii seifurilor, se decide modificarea codurilor , utilizând codurile , în modul următor.
Pentru fiecare cod se stabileşte un cod din şirul denumit cod asociat, astfel:
- codul se poate asocia cu codul dacă cel puţin jumătate dintre cifrele lui sunt conţinute de , în cazul în care numărul de cifre al codului este par şi cel puţin jumătate +1 din cifrele lui sunt conţinute de , în cazul în care numărul de cifre ale codului este impar;
- dacă pentru un cod există mai multe coduri ce pot fi asociate cu el din şirul , se va alege codul care conţine cel mai mare număr de cifre comune cu ;
- dacă există mai multe coduri care au acelaşi număr maxim de cifre comune cu codul , se va alege primul dintre ele (cel cu indicele cel mai mic).
Codul se transformă într-un nou număr natural , obţinut astfel:
- se elimină din toate cifrele comune cu ales;
- se formează cel mai mare număr cu toate cifrele rămase după eliminare şi acesta va fi ; dacă obţinut este mai mic decât , se adună cu numărul .
Cerință
Scrieţi un program care determină şirul de coduri , obţinut prin transformarea codurilor iniţiale , pe baza şirului .
Date de intrare
Fişierul de intrare cod.in
conţine pe prima linie numerele şi separate printr-un spaţiu, pe a doua linie numere ce reprezintă codurile din şirul şi pe a treia linie numere ce reprezintă codurile din şirul .
Date de ieșire
Fişierul de ieşire cod.out
conţine pe o singură linie şirul de numere separate între ele prin câte un spaţiu.
Restricții și precizări
- Codurile din şirul sunt distincte între ele şi fiecare cod conţine cel puţin cifre distincte.
Exemplu
cod.in
4 5
134925 32960 18542 195633
305285 3067583 20375 29785 213198
cod.out
12399 12441 12386 12436