Pagini recente » Cod sursa (job #1801439) | Cod sursa (job #32303) | Cod sursa (job #1392307) | Cod sursa (job #755702) | Cod sursa (job #324397)
Cod sursa(job #324397)
#include <fstream>
using namespace std;
fstream fin ("hashuri.in",ios::in);
fstream fout("hashuri.out",ios::out);
#define NR 666013
int n;
struct Hash{
int info;
Hash *urm;
};
Hash *H[666050];
int add(int ce){
Hash *p;
int unde = ce % NR;
for (p = H[unde]; p != NULL; p = p->urm)
if (p->info == ce) return 0;
p = new Hash;
p->info = ce;
p->urm = H[unde];
H[unde] = p;
return 0;
};
int del(int ce){
int unde;
Hash *p, *q;
unde = ce % NR;
if (H[unde] == NULL) return 0;
if (H[unde]->info == ce){
q = H[unde];
H[unde] = H[unde]->urm;
delete q;
return 1;
};
for (p = H[unde]; p->urm != NULL; p = p->urm)
if (p->urm->info == ce){
p->urm = q;
p->urm = q->urm;
delete q;
return 1;
}
return 0;
};
int search(int ce){
Hash *p;
int unde = ce % NR;
for (p = H[unde]; p != NULL; p = p->urm)
if (p->info == ce) return 1;
return 0;
};
int main(){
int op, val;
fin>>n;
for (int i = 1; i <= n; i++){
fin>> op >> val;
switch (op){
case 1 : add(val);
break;
case 2 : del(val);
break;
case 3 : if (search(val)) fout<<"1\n";
else fout<<"0\n";
break;
};
};
};