//Citim numerele si folosim doi vectori caracteristici: unul pentru sufixe si unul pentru numerele cu exact 3 cifre.
//Apoi parcurgem numerele de 3 cifre si le afisam pe cele care apar ca marcate in ambii vectori caracteristici
//Algoritmul este eficient ca timp de executie deoarece numerele din fisier se parcurg o singura data.
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("bac.in");
int main()
{
int S[1000]={0},F[1000]={0}, n;
while(fin>>n)
if(n<1000) F[n]=1;//retin ca apare in numere
else S[n%1000]=1;//retin ca apare ca sufix
for(int i=100;i<=999;i++)
if(F[i]==1 && S[i]==1)//le afisez doar pe cele care apar in ambele
cout<<i<<endl;
return 0;
}
|