Pagini recente » Cod sursa (job #2049370) | Cod sursa (job #2936171) | Cod sursa (job #574561) | Cod sursa (job #1447177) | Cod sursa (job #2107762)
#include <iostream>
#include <fstream>
///pica pe un caz (: (: (: (: (: (: (: (: (: (: (: (: (: :)
using namespace std;
#define mod 666013
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
struct nod
{
long long info;
nod *prev;
}*H[mod];
int cauta_elem(int x, int k)
{
nod *crt; //parcurgem hashul
for(crt = H[k]; crt!=NULL; crt= crt->prev)
if(crt->info == x)
return 1;
return 0;
}
void adauga_elem(int x, int k)
{
nod *ult = new nod;
ult->info = x;
ult->prev = H[k];
H[k] = ult;
}
void sterge_elem(int x, int k)
{
nod *crt, *ult;
for(crt = H[k]; crt != NULL; crt = crt->prev)
{
if(crt->info == x)
{
if(crt == H[k])
H[k] = NULL;
else
{
ult->prev = crt->prev;
delete crt;
}
break;
}
ult = crt;
}
}
int main()
{
int n, op;
int x;
fin>>n;
int i;
for(i=1; i<=n; i++)
{
fin>>op>>x;
int k = x%mod;
if(op == 1)
{
///se adauga elem x in multime, daca acesta nu exista
if(cauta_elem (x, k) == 0)
adauga_elem(x, k);
//parcurge hash pt verificare
//nod *crt; //parcurgem hashul
//for(crt = H[k]; crt!=NULL; crt= crt->prev)
//cout<<crt->info<<endl;
}
else
if(op == 2)
{
///se sterge elem x daca exista
sterge_elem(x, k);
}
else //op == 3
{
///1=> x e in multime /// 0=> x nu e in multime
fout<<cauta_elem(x, k)<<'\n'; //<------------endl =>TLE (:
}
}
fin.close();
fout.close();
return 0;
}