Pagini recente » Cod sursa (job #759988) | Cod sursa (job #1972970) | Cod sursa (job #955901) | Cod sursa (job #1983442) | Cod sursa (job #904628)
Cod sursa(job #904628)
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
#define MOD1 666013
#define MOD2 10007
vector <int> v1[MOD1],v2[MOD2];
inline int cauta(int x)
{
int i,k,n;
k=x%MOD1;
n=v1[k].size()-1;
for(i=0;i<=n;i++)
if(v1[k][i]==x)
return i;
k=x%MOD2;
n=v2[k].size()-1;
for(i=0;i<=n;i++)
if(v2[k][i]==x)
return i;
return -1;
}
void adauga(int x)
{
int k;
if(cauta(x)==-1) {
k=x%MOD1;
if(v1[k].size()<=v2[x%MOD2].size())
v1[k].push_back(x);
else v2[x%MOD2].push_back(x);
}
}
void sterge(int x)
{
int poz;
poz=cauta(x);
if(poz!=-1) {
if(v1[x%MOD1][poz]==x)
v1[x%MOD1].erase(v1[x%MOD1].begin()+poz);
else v2[x%MOD2].erase(v2[x%MOD2].begin()+poz);
}
}
int main ()
{
int n,i,op,x;
ifstream f("hashuri.in");
ofstream g("hashuri.out");
f>>n;
for(i=1;i<=n;i++) {
f>>op>>x;
if(op==1)
adauga(x);
else if(op==2)
sterge(x);
else {
if(cauta(x)==-1)
g<<"0"<<'\n';
else g<<"1"<<'\n';
}
}
f.close();
g.close();
}