Pagini recente » Cod sursa (job #3244519) | Cod sursa (job #715174) | Cod sursa (job #2197647) | Cod sursa (job #2171751) | Cod sursa (job #812399)
Cod sursa(job #812399)
#include <cstdio>
#include <vector>
#include <string>
#include <list>
#include <algorithm>
#define md 666073;
int dx[8]={-1,-1,0,+1,+1,+1,0,-1};
int dy[8]={0,+1,+1,+1,0,-1,-1,-1};
using namespace std;
FILE *f,*g;
list <int> v[666073];
int y,x,t,i,n;
inline long long hash(int x)
{
return (long long)x*y%md;
}
void add(int x)
{
int i;
list <int> ::iterator j;
i=hash(x);
for (j=v[i].begin();j!=v[i].end();j++)
if (*j==x) return ;
v[i].push_back(x);
}
void remove(int x)
{
int i;
list <int> :: iterator j;
i=hash(x);
for (j=v[i].begin();j!=v[i].end();j++)
if (*j==x)
{
v[i].erase(j);
return ;
}
}
int query(int x)
{
int i;
list <int> :: iterator j;
i=hash(x);
for (j=v[i].begin();j!=v[i].end();j++)
if (*j==x)
return 1;
return 0;
}
int main()
{
f=fopen("hashuri.in","r");
g=fopen("hashuri.out","w");
y=rand() % 100000;
fscanf(f,"%d",&n);
for (i=1;i<=n;i++)
{
fscanf(f,"%d%d",&t,&x);
switch (t)
{
case 1 : add(x); break;
case 2 : remove(x); break;
case 3 : fprintf(g,"%d\n",query(x)); break;
}
}
fclose(g);
return 0;
}