Pagini recente » Cod sursa (job #1799584) | Cod sursa (job #2870436) | Cod sursa (job #941495) | Cod sursa (job #2069461) | Cod sursa (job #2296397)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
const int mod=999999;
vector <int> v[1000001];
void adauga(int x)
{
int i,nr=x%mod,aux=0; //nr primeste rezultatul functiei modulo
for(i=0;i<v[nr].size();i++)
{
if(v[nr][i]==x)//daca il gasim, este marcat u 1
{
aux=1;
}
if(v[nr][i]==-1)//daca este marcat cu -1
{
aux=1;
v[nr][i]=x;//v[nr][i] primeste x
}
}
if(aux==0)
{
v[nr].push_back(x); //elementul nu a fost gasit, deci il adaugam in vector
}
}
void sterge(int x)
{
int i,nr=x%mod;
for(i=0;i<v[nr].size();i++)
{
if(v[nr][i]==x)
{
v[nr][i]=-1;//marcam cu -1 elementul sters
}
}
}
int gaseste(int x)
{
int i,nr=x%mod;
for(i=0;i<v[nr].size();i++)
{
if(v[nr][i]==x)//daca am gasit elementul
return 1; //returnam 1
}
return 0;//altfel returnam 0
}
int main()
{
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
int N,i,op,x;
fin>>N;//citim numarul de operatii efectuate
for(i=1;i<=N;i++)
{
fin>>op>>x;//citim operatia si numarul
if(op==1)
{
adauga(x);//adaugam numarul daca op==1
}
else if(op==2)
{
sterge(x);//adaugam numarul daca op==2
}
else
{
fout<<gaseste(x)<<"\n";// altfel op==3
}
}
fin.close();
fout.close();
return 0;
}