Pagini recente » Cod sursa (job #642001) | Cod sursa (job #3032453) | Cod sursa (job #2506940) | Cod sursa (job #2073926) | Cod sursa (job #611871)
Cod sursa(job #611871)
#include<fstream>
#include<cstring>
#include<cstdlib>
#define MODULO 66613
#define HASH(x) (x)%MODULO
#define infile "hashuri.in"
#define outfile "hashuri.out"
typedef struct NODE{
struct NODE *next;
int data;
}NODE;
void add(NODE *x, int number)
{
NODE *a = x;
while(a->next){
if(a->next->data == number)
return;
}
NODE *newNode = (NODE*)malloc(sizeof(NODE));
newNode->next = NULL;
newNode->data = number;
a->next = newNode;
}
void rem(NODE *x, int number)
{
NODE *a = x;
NODE *b;
while(a->next){
if(a->next->data == number){
b = a->next;
a->next = a->next->next;
free(b);
}
}
}
int exists(NODE *x, int number)
{
NODE *a = x;
while(a->next){
if(a->next->data == number)
return 1;
}
return 0;
}
int main()
{
NODE *table[MODULO];
int i;
int N;
std::ifstream fin(infile);
std::ofstream fout(outfile);
for(i = 0; i<MODULO; ++i){
table[i] = (NODE*)malloc(sizeof(NODE));
table[i]->next = NULL;
}
fin>>N;
for(i = 0; i<N; ++i){
int op, nr;
fin>>op>>nr;
switch(op){
case 1:
add(table[HASH(nr)], nr);
break;
case 2:
rem(table[HASH(nr)], nr);
break;
case 3:
fout<<exists(table[HASH(nr)], nr)<<std::endl;
break;
default:
return 1;
}
}
fin.close();
fout.close();
return 0;
}