Pagini recente »
Istoria paginii utilizator/mihai7priboi
|
Istoria paginii utilizator/mihai_paul
|
Diferențe pentru utilizator/grama2008 între reviziile 1 și 29
|
Diferențe pentru problema/maxconcat între reviziile 6 și 7
|
Diferențe pentru problema/vecine între reviziile 2 și 10
Nu există diferențe între titluri.
Diferențe între conținut:
== include(page="template/taskheader" task_id="vecine") ==
Se dă un șir de $n$ cifre c ~1~ , c ~2~ , . . . , c ~n~ , adică 0≤c ~i~ ≤9. Dintr-un șir de cifre se poate obține un șir de 1≤m≤n numere a ~1~ , a ~2~ , . . . , a ~m~ astfel:
Se dă un șir de $n$ cifre c[~1~], c[~2~], ..., c[~n~], adică 0 ≤ c[~i~] ≤ 9. Dintr-un șir de cifre se poate obține un șir de 1 ≤ m ≤ n numere a[~1~], a[~2~], ..., a[~m~] astfel:
* Inițial considerăm fiecare cifră un număr și obținem șirul de n numere a ~i~ = c ~i~ .
* Inițial considerăm fiecare cifră un număr și obținem șirul de n numere a[~i~] = c[~i~].
* Un număr nou poate fi obținut prin lipirea unei secvențe de două sau mai multe numere vecine din șirul original. Două elemente dintr-un șir se numesc vecine dacă acestea se regăsesc în șir pe poziții alăturate.
* Operația de lipire de două sau mai multe numere se poate realiza de oricâte ori atât timp cât numărul obținut este mai mic sau egal cu 2 000 000 000, nu începe cu cifra 0 și există cel puțin două numere în șir.
* De exemplu șirul [3, 5, 0, 2, 7, 3] poate deveni [35, 0, 2, 73] prin lipirea numerelor 3, 5 → 35 și 7, 3 → 73, care ulterior poate deveni [3502, 73] prin lipirea numerelor 35, 0, 2 → 3502. Dar nu putem crea șirul [35, 02, 73], deoarece am avea un număr care începe cu 0.
Cunoscându-se șirul de cifre inițial, să se obțină următoarele rezultate:
# Presupunând că nu se face nici o lipire de cifre, fiecare cifră devenind un număr în șir, adică a ~i~ = c ~i~ , să se determine câte perechi de numere vecine consecutive există în șir;
# Presupunând că nu se face nici o lipire de cifre, fiecare cifră devenind un număr în șir, adică a[~i~] = c[~i~], să se determine câte perechi de numere vecine consecutive există în șir;
# Să se determine o modalitate de lipire a cifrelor astfel încât să se obțină cele mai mari două numere vecine consecutive și să se afișeze primul dintre aceste numere.
h2. Date de intrare
Fișierul de intrare $vecine.in$ conține pe prima linie două numere $p$ și [$n$], $p$ reprezentând cerința 1 sau 2, iar pe linia următoare cele $n$ cifre, despărțite prin câte un spațiu.
Fișierul de intrare $vecine.in$ conșine pe prima linie două numere $p$ și [$n$], $p$ reprezentând cerința 1 sau 2, iar pe linia următoare cele $n$ cifre, despărțite prin câte un spațiu.
h2. Date de ieșire
* Tot pentru cerința 2 se garantează existența a cel puțin o pereche de numere vecine consecutive
* Cifra 0 poate forma singură doar numărul 0.
* Două numere vecine sunt consecutive dacă primul este cu 1 mai mic decât al doilea.
* Pentru $p$ = 1 și 3 $le n $le 100 000 se obțin 20 puncte
* Pentru $p$ = 2 și 3 $le n $le 100 000 se obțin 80 puncte
* Se acordă 20 de puncte pentru $p$ = 1, iar 3 ≤ n ≤ 100 000
* Se acordă 80 de puncte pentru $p$ = 2, iar 3 ≤ n ≤ 100 000
h2. Exemplu
table(example).
|_. vecine.in |_. vecine.out |
| This is some
text written on
multiple lines.
| This is another
text written on
multiple lines.
|
| 1 18
3 2 1 2 1 0 6 3 0 5 6 3 0 6 9 2 9 3
| 2
|
| 2 18
3 2 1 2 1 0 6 3 0 5 6 3 0 6 9 2 9 3
| 6305
|
h3. Explicație
...
Pentru primul exemplu:
[3, 2, +1, 2+ , 1, 0, 6, 3, 0, +5, 6+ , 3, 0, 6, 9, 2, 9, 3]
Există două perechi de numere vecine consecutive formate dintr-o singură cifră: 1, 2 și 5, 6.
Pentru cel de-al doilea exemplu putem lipi următoarele secvențe:
[3, 2, 1, 2, 1, 0, +6, 3, 0, 5+ , +6, 3, 0, 6+ , 9, 2, 9, 3] → [3, 2, 1, 2, 1, 0, 6305, 6306, 9, 2, 9, 3]
Perechea cu cele mai mari două numere vecine consecutive este 6305 și 6306. Conform cerinței s-a scris în fișier doar primul număr din pereche.
== include(page="template/taskfooter" task_id="vecine") ==
Nu există diferențe între securitate.