# PBinfo #3960 – intersectie_siruri – Rezolvare C++

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

## Enunț

Cerința
Dându-se mai multe șiruri crescătoare de numere naturale, sfârșitul fiecarui astfel de șir fiind marcat de numărul 0, se cere să se afișeze în ordine strict crescătoare, numerele comune tuturor șirurilor.

Date de intrare
Fișierul de intrare intersectie.in conține numere naturale separate printr-un spațiu, care formează șiruri crescătoare, fiecare astfel de șir terminându-se cu numărul 0.

Date de ieșire
Fișierul de ieșire intersectie.out va conține în ordine strict crescătoare, numerele comune tuturor șirurilor. 

Restricții și precizări

Fiecare șir conține maxim 100.000 de numere.
Fiecare număr din șir are valori cuprinse între [1, 231 - 1].
În fișierul intersectie.in, pot fi maxim 3.000.000 numere.
Dacă nu avem niciun număr comun se va afișa mesajul nu exista.

Exemplu:
intersectie.in

1 2 3 7 10 0 1 4 5 7 10 0 2 3 7 10 0 2 3 5 7 9 10 0
intersectie.out

7 10
Explicație
Toate cele 4 șiruri :

1 2 3 7 10 
1 4 5 7 10
2 3 7 10 
2 3 5 7 9 10
au numerele 7 și 10 valori comune.

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
using namespace std;
ifstream in("intersectie.in");
ofstream out("intersectie.out");
int a[100005], b[100005], c[100005], ct, ct2, ct3, i, j;
int main() {
    a[0] = 1;
    while (a[ct] != 0) in >> a[++ct];
    ct--;
    while (in >> b[1]) {
        ct2 = 1;
        ct3 = 0;
        while (b[ct2] != 0) in >> b[++ ct2];
        i = j = 1;
        while (i <= ct && j <= ct2) {
            if (a[i] == b[j]) c[++ ct3] = b[j], j++, i++;
            else if (a[i] > b[j]) j++;
            else i++;
        } for (i = 1; i <= ct3; i++) a[i] = c[i];
        ct = ct3;
        if (ct3 == 0) { out << "nu exista"; return 0; }
    } for (i = 1; i <= ct3; i++) out << a[i] << " ";
    return 0;
}
```

## Resurse

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