vecine

Time limit: 0.1s Memory limit: 64MB Input: vecine.in Output: vecine.out

Se dă un șir de nn cifre c1,c2,,cnc_1, c_2, \dots, c_n, adică 0ci90 \leq c_i \leq 9. Dintr-un șir de cifre se poate obține un șir de 1mn1 \leq m \leq n numere a1,a2,,ama_1, a_2, \dots, a_m astfel:

  • Inițial considerăm fiecare cifră un număr și obținem șirul de nn numere ai=cia_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 0002 \ 000 \ 000 \ 000, nu începe cu cifra 00 și există cel puțin două numere în șir.
  • De exemplu șirul [3,5,0,2,7,33, 5, 0, 2, 7, 3] poate deveni [35,0,2,7335, 0, 2, 73] prin lipirea numerelor 33, 5355 → 35 și 7,3737, 3 → 73, care ulterior poate deveni [3502,733502, 73] prin lipirea numerelor 35,0,2350235, 0, 2 → 3502. Dar nu putem crea șirul [35,02,7335, 02, 73], deoarece am avea un număr care începe cu 00.

Două numere vecine sunt consecutive dacă primul este cu 11 mai mic decât al doilea.

Cerință

Cunoscându-se șirul de cifre inițial, să se obțină următoarele rezultate:

  1. Presupunând că nu se face nici o lipire de cifre, fiecare cifră devenind un număr în șir, adică ai=cia_i = c_i, să se determine câte perechi de numere vecine consecutive există în șir;
  2. 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.

Date de intrare

Fișierul de intrare vecine.in contine pe prima linie două numere pp și nn, pp reprezentând cerința 11 sau 22, iar pe linia următoare cele nn cifre, despărțite prin câte un spațiu.

Date de ieșire

În fișierul de ieșire vecine.out se va afla un singur număr natural. Dacă p=1p = 1, acesta va reprezenta răspunsul pentru cerința 11. Dacă p=2p = 2, acesta va reprezenta răspunsul pentru cerința 22.

Restricții și precizări

  • Pentru cerința 22 se garantează că numerele ce se pot obține nu vor depăși valoarea 2 000 000 0002 \ 000 \ 000 \ 000;
  • Tot pentru cerința 22 se garantează existența a cel puțin o pereche de numere vecine consecutive
  • Cifra 00 poate forma singură doar numărul 00.
  • Două numere vecine sunt consecutive dacă primul este cu 11 mai mic decât al doilea.
  • Se acordă 2020 de puncte pentru p=1p = 1, iar 3n100 0003 \leq n \leq 100 \ 000;
  • Se acordă 8080 de puncte pentru p=2p = 2, iar 3n100 0003 \leq n \leq 100 \ 000;

Exemplul 1

vecine.in

1 18
3 2 1 2 1 0 6 3 0 5 6 3 0 6 9 2 9 3

vecine.out

2

Explicație

Pentru primul exemplu:
[3,2,1,2,1,0,6,3,0,5,6,3,0,6,9,2,9,33, 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,21, 2 și 5,65, 6.

Exemplul 2

vecine.in

2 18
3 2 1 2 1 0 6 3 0 5 6 3 0 6 9 2 9 3

vecine.out

6305

Explicație

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,33, 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,33, 2, 1, 2, 1, 0, 6305, 6306, 9, 2, 9, 3]

Perechea cu cele mai mari două numere vecine consecutive este 63056305 și 63066306. Conform cerinței s-a scris în fișier doar primul număr din pereche.

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