Fișierul intrare/ieșire vecine.in, vecine.out Sursă OJI 2022, clasa 6-a
Autor Rodica Pintea Adăugată de avatar mihai.tutu Mihai Tutu mihai.tutu
Timp de execuție pe test 0.1 sec Limită de memorie 65536 KB
Scorul tău N/A Dificultate stea de rating de tip fullstea de rating de tip emptystea de rating de tip emptystea de rating de tip emptystea de rating de tip empty
open book Poți vedea testele pentru această problemă accesând atașamentele .

Vecine (clasa a 6-a)

Se dă un șir de n cifre c1, c2, ..., cn, adică 0 ≤ ci ≤ 9. Dintr-un șir de cifre se poate obține un șir de 1 ≤ m ≤ n numere a1, a2, ..., am astfel:

  • Inițial considerăm fiecare cifră un număr și obținem șirul de n numere ai = ci.
  • 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.

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

Cerința

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 = ci, 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 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.

Date de ieșire

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

Restricții

  • Pentru cerința 2 se garantează că numerele ce se pot obține nu vor depăși valoarea 2 000 000 000
  • 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.
  • 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

Exemplu

vecine.in vecine.out
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

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.

Trebuie să te autentifici pentru a trimite soluții. Click aici

Indicii de rezolvare

Arată 4 categorii