Pagini recente » Cod sursa (job #1156322) | Cod sursa (job #19663) | Cod sursa (job #426608) | Cod sursa (job #3002479) | Cod sursa (job #1687886)
#include <iostream>
#include<stdio.h>
using namespace std;
int k=666013,i,j,n,m,o;
long long k10;
struct nod
{
long long x;
nod*leg=NULL;
}*prim[666013],*ultim[666013];
bool cautare(long long h)
{
int i10=h%k;
nod*p;p=new nod;p=prim[i10];
while(p!=NULL&&p->x!=h)p=p->leg;
if(p==NULL)return 0;
return 1;
}
void ad(long long h)
{
if(!cautare(h))
{
int j10=h%k;
nod*p1=new nod;p1=prim[j10];
if(p1==NULL)
{
prim[j10]=new nod;ultim[j10]=new nod;
prim[j10]->x=h;ultim[j10]->x=h;
}
else
{
p1=ultim[j10]->leg;p1=new nod;p1->x=h;//p1->leg=NULL;
ultim[j10]=p1;
}
}
}
void tedistrug(long long h)
{
int u10=h%k;
nod*p2;p2=new nod;p2=prim[u10];
if(p2!=NULL)
{
if(p2->x==h)
{
if(p2->leg==NULL){prim[u10]=NULL;ultim[u10]=NULL;}
else{prim[u10]=p2->leg;delete p2;}
}
else
{
while(p2->leg!=NULL&&p2->leg->x!=h)p2=p2->leg;
if(p2->leg!=NULL)
{
nod*p3;
p3=new nod;p3=p2->leg;
p2->leg=p3->leg;
delete p3;
}
}
}
}
int main()
{
for(i=0;i<666013;++i){/*prim[i]=new nod;ultim[i]=new nod;*/prim[i]=NULL;ultim[i]=NULL;}
FILE*f=fopen("hashuri.in","r");
fscanf(f,"%d",&n);
FILE*g=fopen("hashuri.out","w");
for(i=0;i<n;++i)
{
fscanf(f,"%d%lld",&o,&k10);
if(o<2)
{
ad(k10);//cout<<"asdgdg\n";
}
else
{
if(o<3)
{
tedistrug(k10);
}
else
{
if(cautare(k10))fprintf(g,"1\n");
else fprintf(g,"0\n");
}
}
}
fclose(f);
fclose(g);
return 0;
}