Pagini recente » Cod sursa (job #926111) | Cod sursa (job #1552694) | Cod sursa (job #2203832) | Monitorul de evaluare | Cod sursa (job #1058501)
#include <fstream>
#include <iostream>
using namespace std;
struct col
{
int val;
col *next;
};
struct linie
{
col *prim;
linie *next;
}*p;
void ad(int x)
{
int lin=x/1000+1, i=0;
linie *tl=p, *adl;
col *tc, *adc;
for(i=0;i<lin;i++)
{
if(!tl->next)
{
adl=new linie;
adl->prim=new col;
adl->prim->next=NULL;
adl->next=NULL;
tl->next=adl;
}
tl=tl->next;
}
tc=tl->prim;
while(tc->next)
{
tc=tc->next;
if(tc->val==x)
return;
}
adc=new col;
adc->next=NULL;
adc->val=x;
tc->next=adc;
}
void st(int x)
{
int lin=x/1000+1, i=0;
linie *tl=p;
col *tc;
for(i=0;i<lin;i++)
{
if(!tl->next)
return;
tl=tl->next;
}
tc=tl->prim;
while(tc->next)
{
if(tc->next->val==x)
{
tc->next=tc->next->next;
return;
}
tc=tc->next;
}
}
int search(int x)
{
int lin=x/1000+1, i=0;
linie *tl=p;
for(i=0;i<lin;i++)
{
if(!tl->next)
return 0;
tl=tl->next;
}
col *tc=tl->prim->next;
while(tc)
{
if(tc->val==x)
return 1;
tc=tc->next;
}
return 0;
}
int main(int argc, char *argv[])
{
int n, op, x, i;
p=new linie;
p->prim=new col;
p->prim->next=NULL;
p->next=NULL;
linie *t=p;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
fin>>n;
for(i=0;i<n;i++)
{
fin>>op>>x;
if(op==1)
ad(x);
else if(op==2)
st(x);
else
fout<<search(x)<<endl;
}
return 0;
}