Pagini recente » Cod sursa (job #2067882) | Cod sursa (job #2745857) | Cod sursa (job #1612707) | Cod sursa (job #2218960) | Cod sursa (job #807259)
Cod sursa(job #807259)
#include<stdio.h>
#include <iostream>
#define mod 666013
using namespace std;
int n,op;
long long x;
struct nod
{
long long inf;
nod *next;
};
typedef nod *lista;
lista l[mod];
void add(long long k)
{
lista p,aux;
int ok;
ok=1;
for(p=l[k%mod];p&&ok;p=p->next)
if(p->inf==k)ok=0;
if(ok)
{
aux=new nod;
aux->inf=k;
aux->next=l[k%mod];
l[k%mod]=aux;
}
}
void remove(long long k)
{
lista p,aux;
p=l[k%mod];
if(p)
{
if(p->inf==k)
{
l[k%mod]=p->next;
delete p;
}
else {
while(p->next&&p->next->inf!=k)
p=p->next;
if(p->next)
{
aux=p->next;
p->next=aux->next;
delete aux;
}
}
}
}
int find(long long k)
{
lista p;
for(p=l[k%mod];p;p=p->next)
if(p->inf==k)return 1;
return 0;
}
int main()
{
FILE *f=fopen("hashuri.in","r");
FILE *fi=fopen("hashuri.out","w");
fscanf(f,"%d",&n);
for(int i=0;i<mod;i++)l[i]=NULL;
for(int i=1;i<=n;i++)
{ fscanf(f,"%d %lld",&op,&x);
switch(op)
{
case 1:add(x);break;
case 2:remove(x);break;
case 3:fprintf(fi,"%d\n",find(x));break;
}
}
return 0;
}