Pagini recente » Cod sursa (job #2799951) | Cod sursa (job #1672280) | Cod sursa (job #2862592) | Cod sursa (job #873020) | Cod sursa (job #1037945)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("hashuri.in");
ofstream g("hashuri.out");
int n, x;
int t;
struct nod{
int val;
nod *next;
};
nod *v[666014];
int hash_f(int a){
return a%666013;
}
void adauga(int a){
int h=hash_f(a);
nod *p=new nod;
p->val=a;
p->next=NULL;
nod *q=v[h];
if(q==NULL) {
v[h]=p;
return;
}
while(q->next!=NULL){
if(q->val==a) return;
q=q->next;
}
if(q->val==a) return;
q->next=p;
}
void sterge(int a){
int h=hash_f(a);
if(v[h]==NULL) return;
nod *q=v[h];
if(q->val==a){
//cout<<"sterg "<<a<<'\n';
v[h]=q->next;
delete q;
return;
}
while(q->next!=NULL){
nod *p=q->next;
if(p->val==a){
q->next=p->next;
delete p;
return;
}
else q=q->next;
}
}
void exista(int a){
int h=hash_f(a);
nod *q=v[h];
while(q!=NULL){
if(q->val==a){
g<<1<<'\n';
return;
}
else q=q->next;
}
g<<0<<'\n';
return;
}
int main()
{
f>>n;
while(n--){
f>>t>>x;
if(t==1) adauga(x);
if(t==2) sterge(x);
if(t==3) exista(x);
}
return 0;
}