Pagini recente » Cod sursa (job #2119749) | Cod sursa (job #1149714) | Cod sursa (job #1160972) | Cod sursa (job #1377940) | Cod sursa (job #836673)
Cod sursa(job #836673)
#include<fstream>
#define nmax 666013
using namespace std;
bool M[nmax];
unsigned long N;
struct nod{
unsigned long info;
nod *next;
};
struct lista{
nod *p,*u;
};
lista H[nmax];
ifstream f("hashuri.in");
ofstream g("hashuri.out");
void insL1(unsigned long x){
unsigned long poz=x%666013;
H[poz].p=new nod;
H[poz].p->info=x;
H[poz].p->next=NULL;
H[poz].u=H[poz].p;
}
void insL2(unsigned long x){
unsigned long poz=x%666013;
nod *q=new nod;
q->info=x;
H[poz].u->next=q;
q->next=NULL;
H[poz].u=q;
}
void ins(unsigned long x){
unsigned long poz=x%666013;
if(M[poz]==false){
M[poz]=true;
insL1(x);
}
else
insL2(x);
}
void del1(unsigned long x){
unsigned long poz=x%666013;
nod *q=H[poz].p;
if(q->info==x){
if(q->next==NULL){
delete q;
M[poz]=false;
}
else{
H[poz].p=H[poz].p->next;
delete q;
}
}
else
while(q->next!=NULL)
if(q->next->info==x){
nod *z=q->next;
q->next=q->next->next;
delete z;
}
else
q=q->next;
}
void del(unsigned long x){
unsigned long poz=x%666013;
if(M[poz]!=false){
del1(x);
}
}
void search(unsigned long x){
unsigned long poz=x%666013;
if(M[poz]==false)
g<<0<<'\n';
else{
int ok=0;
nod *q=H[poz].p;
while(q!=NULL){
if(q->info==x){
g<<1<<'\n';
ok=1;
break;
}
else
q=q->next;
}
if(ok==0) g<<0<<'\n';
}
}
void citire(){
unsigned long op,x;
f>>N;
for(unsigned long i=1;i<=N;i++){
f>>op>>x;
if(op==1)
ins(x);
else
if(op==2)
del(x);
else
search(x);
}
}
int main(){
citire();
}