# PBinfo #846 – Dubluri – Rezolvare C++

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

## Enunț

Cerința
Se dă un șir de caractere ce conține doar litere mici ale alfabetului englez. Să se afișeze cel mai lung subșir care apare de cel puțin două ori în șirul dat.

Date de intrare
Programul citește de la tastatură șirul dat.

Date de ieșire
Programul va afișa pe ecran cel mai lung subșir cu cel puțin două apariții. 

Restricții și precizări

șirul dat are cel mult 255 caractere
dacă există mai multe subșiruri de lungime maximă care apar de cel puțin două ori, se va afișa primul în ordine lexicografică.
pentru toate datele de test există cel puțin un subșir din cel puțin două caractere, care se repetă

Exemplu:
Intrare

cbddccdaaddccaaddbccbbdbddd
Ieșire

aadd
Explicație
Sirul aadd apare de două ori șirul dat. Niciun șir de lungime mai mare nu apare de cel puțin două ori. Să observăm că și șirul ddcc apare de două ori, dar ele este mai mare decât aadd, în ordinea lexicografică.

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
using namespace std;
char s[256], t[256], maxim[256];
int main() {
    cin >> s;
    strcpy(maxim, "");
    for (int i = 0; s[i + 1]; i++)
        for (int j = 2; s[i + j]; j ++) {
            strncpy(t, s + i, j); 
            t[j] = 0;
            if (strstr(s + i + 1, t)) {
                if (strlen(t) > strlen(maxim))
                    strcpy(maxim, t);
                else if (strlen(t) == strlen(maxim))
                    if (strcmp(t, maxim) < 0)
                    strcpy(maxim, t);
            }
    } cout << maxim;
    return 0;
}
```

## Resurse

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