Pagini recente » Cod sursa (job #1880481) | Cod sursa (job #3242866) | Cod sursa (job #616724) | Cod sursa (job #1826857) | Cod sursa (job #730329)
Cod sursa(job #730329)
#include <fstream>
#include <iostream>
using namespace std;
ifstream f("hashuri.in");
ofstream g("hashuri.out");
struct lista{
int numar;
lista* next;
};
lista *prim[199993];
void adauga(long x){
int i = x%199993;
if (prim[i] == NULL){
prim[i] = new lista;
prim[i]->numar = x;
prim[i]->next = NULL;
}
else{
lista *l;
l->next = prim[i];
l->numar = x;
prim[i] = l;
/*
l = prim[i];
while(l->next != NULL){
if (l->numar == x)
return;
else
l = l->next;
}
if(l->numar == x)
return;
lista *p = new lista;
l->next = p;
p ->numar = x;
p->next = NULL;*/
}
}
void sterge(long x){
int i = x%199993;
if (prim[i] == NULL)
return;
else{
lista *l, *p;
l = prim[i];
p = prim[i];
if(prim[i]->numar == x){
prim[i] = prim[i]->next;
return;
}
while(l->next != NULL){
if (l->numar == x)
p ->next = l->next;
else
{
p = l;
l = l->next;
}
}
if(l->numar == x)
p->next = NULL;
}
}
int returneaza(long x){
int i = x%199993;
if (prim[i] == NULL)
return 0;
else{
lista *l;
l = prim[i];
if(prim[i]->numar == x){
return 1;
}
while(l->next != NULL){
if (l->numar == x)
return 1;
else
l = l->next;
}
if(l->numar == x)
return 1;
return 0;
}
}
int main(){
int n;
int op;
prim[20000] = {NULL};
long x;
f >> n;
for(int i = 0; i < n; i++)
{
f >> op;
f >> x;
if(op == 1)
adauga(x);
else if(op == 2)
sterge(x);
else
g << returneaza(x) << "\n";
}
f.close();
g.close();
return 0;
}