# PBinfo #2302 – Memory009 – Rezolvare C++

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

## Enunț

Cerința
Se dau două șiruri de numere A și B.Calculati A ∩ B.

Date de intrare
Fișierul de intrare memory009.in conține pe prima linie numerele n, m (lungimile celor două șiruri), iar pe a doua linie n numere naturale separate prin spații, iar pe a treia linie m numere naturale separate prin spații .

Date de ieșire
Fișierul de ieșire memory009.out va conține mulțimea M care reprezinta mulțimea A ∩ B, în ordine crescătoare.

Restricții și precizări

1 ≤ n ≤ m ≤ 1.000.000
numerele de pe a doua linie și a treia a fișierului de intrare vor fi mai mici sau egale cu 30
în fișierul de ieșire nu se repetă elementele !

Exemplu:
memory009.in

3 2
2 5 3
5 9
memory009.out

5

## Cod sursă C++

```cpp
///by Matei - 100pnct
#include <fstream>
using namespace std;
ifstream cin("memory009.in");
ofstream cout("memory009.out");
int main()
{
	int n, m;
	cin >> n >> m;
	int rez1 = 0;
    for(int i = 1; i <= n; ++i){
		int x;
		cin >> x;
        rez1 = rez1 |(1 << x);
    }
	int rez2 = 0;
	for(int i = 1; i <= m; ++i){
		int x;
		cin >> x;
        rez2 = rez2 | (1 << x);
    }
    int rezF = rez1 & rez2;
    for(int i = 1; i <= 30; ++i){
        int aux = (1 << i);
        aux = aux & rezF;
		if(aux != 0){
            cout << i << ' ';
		}
    }
    cout << '\n';
    return 0;
}
```

## Resurse

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