# PBinfo #2533 – SecventaIncadrata – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

Cerința
Numim secvență încadrată a unui șir de numere naturale un subșir al acestuia, format din termeni aflați pe poziții consecutive în șirul dat, subșir care începe și se termină cu aceeași valoare. Lungimea secvenței este egală cu numărul de termeni ai acesteia.

Să se determine secvențele încadrate dintr-un șir, care au lungimea maximă.

Date de intrare
Fișierul de intrare secventaincadrata.in conține cel puțin două și cel mult 106 numere naturale din intervalul [0,9], separate printr-un spațiu.

Date de ieșire
Fișierul de ieșire secventaincadrata.out va conține pe prima linie numărul L, reprezentând lungimea maximă a secvențelor încadrate, iar pe a doua linie a fișierului valoarea primului termen al fiecărei secvențe încadrate de lungime maximă, în ordine crescătoare și separate printr-un spațiu.

Restricții și precizări

în șir există ce puțin doi termeni egali
proiectați un algoritm eficient din punctul de vedere al timpului de executare și a memoriei utilizate
	
se recomandă o soluție care să evite stocarea tuturor valorilor citite într-un tablou sau într-o altă structură de date similară


Exemplu:
secventaincadrata.in

3 1 5 2 4 5 5 2 5 9 5 7 4 6 8 0 8
secventaincadrata.out

9
4 5
Explicație
Cele două secvențe încadrate de lungime maximă egală cu 9, sunt 5 2 4 5 5 2 5 9 5, respectiv 4 5 5 2 5 9 5 7 4.

## Cod sursă C++

```cpp
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("secventaincadrata.in");
ofstream g("secventaincadrata.out");
int ap1[10], ap2[10], n, i, x, k, lmax;
int main()
{
    n = 0;
    while (f >> x)
    {
        n++;
        if (ap1[x] == 0) ap1[x] = n;
        else ap2[x] = n;
    }
    lmax = 0;
    for (i = 0; i <= 9; i++)
        if (ap2[i] - ap1[i] + 1 > lmax) lmax = ap2[i] - ap1[i] + 1;
    g << lmax <<'\n';
    for (i = 0; i <= 9; i++)
        if (ap2[i] - ap1[i] + 1 == lmax) g << i <<' ';
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/2533)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/2533/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-2533/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
