Pagini recente » Cod sursa (job #1139728) | Cod sursa (job #1072431) | Statistici Chirila Luca Florentin (Luca_Chirila) | Cod sursa (job #1766463) | Cod sursa (job #703856)
Cod sursa(job #703856)
#include <cstdio>
int n;
typedef struct list{
list *next;
long v;
} list;
list *tbl[999983];
long hash(long val){
return val % 999983;
}
bool lookup(long val){
long key = hash(val);
list *p = tbl[key];
while(p){
if(p->v == val) return 1;
p = p->next;
}
return 0;
}
void insert(long val){
if(lookup(val)) return;
long key = hash(val);
list *p = new list;
p->v = val;
p->next = tbl[key];
tbl[key] = p;
}
void del(long val){
long key = hash(val);
if(!tbl[key]) return;
list *p = tbl[key], *q;
if(p->v == val){
tbl[key] = p->next;
delete p;
return;
}
while(p){
q = p;
p = p->next;
if(p->v == val){
q->next = p->next;
delete p;
return;
}
}
}
int main(){
FILE *f = fopen("hashuri.in", "r");
FILE *g = fopen("hashuri.out", "w");
fscanf(f, "%d", &n);
int op; long val;
for(int i=0; i<n; i++){
fscanf(f, "%d %d", &op, &val);
switch(op){
case 1:
insert(val);
break;
case 2:
del(val);
break;
case 3:
int r = lookup(val);
fprintf(g, "%d\n", r);
break;
}
}
return 0;
fclose(f);
fclose(g);
}