Pagini recente » Atasamentele paginii Profil adnionut | Diferente pentru algoritmiada-2009/runda-finala/regulament intre reviziile 4 si 1 | Diferente pentru utilizator/dragosc1 intre reviziile 15 si 24 | Atasamentele paginii Profil swxx | Diferente pentru problema/pmk intre reviziile 36 si 1
Diferente pentru
problema/pmk intre reviziile
#36 si
#1
Diferente intre titluri:
Diferente intre continut:
== include(page="template/taskheader" task_id="pmk") ==
Algoritmul KMP este folosit pentru a cauta eficient aparitiile unui cuvant intr-un text.
In prima faza el calculeaza functia prefix pentru orice prefix al cuvantului.
Pentru un sir functia are ca rezultat lungimea celui mai lung prefix propriu care este si sufix (propriu) al sirului. Un prefix propriu al unui sir e un prefix diferit de sir (sirul intreg nu e prefix propriu).
Ca si conventie de implementare, rezultatul functiei prefix retinut pe pozitia **i** este functia pentru prefixul de la prima pozitia pana la pozitia **i** **exclusiv**, iar pentru prima pozitie se considera ca functia returneaza -1. Un exemplu pentru valorile functiei prefix este urmatorul:
| **i** (indexat de la 0)
| 0
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| **sir[i]** |{background:lightgray}. **a** |{background:lightgray}. **b** |{background:lightgray}. b |{background:lightgray}. a |{background:lightgray}. **a** |{background:lightgray}. **b** | b | b | b | a |
| **prefix[i]**
| -1
| 0
| 0
| 0
| 1
| 1
|{background:lightgray}. **2**
| 3
| 0
| 0
|
de exemplu prefix [6] = prefix("abbaab") = lungime("ab") = 2
Cunoscand rezultatul functiei prefix pentru un sir de lungime data, determinati primul sir in ordine lexicografica pentru care functia prefix are valorile respective. Sirul va fi format doar din litere mici ale alfabetului englez.
Poveste şi cerinţă...
h2. Date de intrare
Fişierul de intrare $pmk.in$ contine o singura linie cu numarul **N**, lungimea sirului urmat de **N** numere, valori valide pentru functia prefix ale unui sir de lungime **N**.
Fişierul de intrare $pmk.in$ ...
h2. Date de ieşire
În fişierul de ieşire $pmk.out$ afisati un sir de caractere pentru care functia prefix are valorile specificate.
În fişierul de ieşire $pmk.out$ ...
h2. Restricţii
* 1 ≤ **N** ≤ 10000
* Va exista cel putin o solutie care contine doar litere mici ale alfabetului englez.
* $... ≤ ... ≤ ...$
h2. Exemplu
table(example). |_. pmk.in |_. pmk.out |
| 10 -1 0 0 0 1 1 2 3 0 0
| abbaabbbba
| This is some
text written on
multiple lines.
| This is another
text written on
multiple lines.
|
h3. Explicaţie
...
== include(page="template/taskfooter" task_id="pmk") ==
Nu exista diferente intre securitate.
Topicul de forum nu a fost schimbat.