Pagini recente » Cod sursa (job #456998) | Cod sursa (job #1368330) | Cod sursa (job #555379) | Cod sursa (job #498128) | Cod sursa (job #2403296)
#include <bits/stdc++.h>
using namespace std;
FILE* si=fopen("hashuri.in","r");
FILE* so=fopen("hashuri.out","w");
struct hashuri
{
vector<int> elem;
} v[666019];
int hashh (int val)
{
int nr=0;
while(val)
{
nr=nr*5+val%10;
nr%=666019;
val/=10;
}
return nr;
}
int findd(int hashval,int nr)
{
for(int i=0; i<v[hashval].elem.size(); i++)
{
if(v[hashval].elem[i]==nr) return i;
}
return -1;
}
int adauga(int nr)
{
int pos=findd(hashh(nr),nr);
if(pos==-1) v[hashh(nr)].elem.push_back(nr);
}
void del(int nr)
{
int hashval=hashh(nr);
int pos=findd(hashval,nr);
if(pos!=-1)
{
v[hashval].elem.erase(v[hashval].elem.begin()+pos);
}
}
int main()
{
int n,i,x,o,aux;
fscanf(si,"%d",&n);
for(i=0; i<n; i++)
{
fscanf(si,"%d%d",&o,&x);
if(o==1)
{
adauga(x);
}
else if(o==2)
{
del(x);
}
else
{
aux=findd(hashh(x),x);
if(aux==-1)
{
fprintf(so,"0\n");
}
else
{
fprintf(so,"1\n");
}
}
}
fclose(si);
fclose(so);
return 0;
}