Cod sursa(job #591851)
#include <iostream>
#include <fstream>
#include <vector>
#define U 666013
#define Adaugare 1
#define Stergere 2
#define Cautare 3
using namespace std;
vector <long> H[U];
long N;
vector <long> :: iterator Seek (long X)
{
vector <long> :: iterator it;
long Key;
Key=X%U;
for (it=H[Key].begin (); it!=H[Key].end (); it++)
{
if (*it==X)
{
return it;
}
}
return it;
}
void Insert (long X)
{
vector <long> :: iterator it;
long Key;
Key=X%U;
it=Seek(X);
if (it==H[Key].end ())
{
H[Key].push_back (X);
}
}
void Delete (long X)
{
vector <long> :: iterator it;
long Key;
Key=X%U;
it=Seek (X);
if (it!=H[Key].end() )
{
H[Key].erase (it);
}
}
int main()
{
ifstream fin ("hashuri.in");
ofstream fout ("hashuri.out");
long Tip=0, X=0, i;
fin >> N;
for (i=0; i<N; i++)
{
fin >> Tip >> X;
if (Tip==Adaugare)
{
Insert (X);
}
if (Tip==Stergere)
{
Delete (X);
}
if (Tip==Cautare)
{
if (Seek (X)==H[X%U].end ())
{
fout << "0\n";
}
else
{
fout << "1\n";
}
}
}
fin.close ();
fout.close ();
return 0;
}