Pagini recente » Cod sursa (job #1727335) | Cod sursa (job #977088) | Cod sursa (job #1287229) | Cod sursa (job #223284) | Cod sursa (job #296677)
Cod sursa(job #296677)
#include <cstdio>
#include <vector>
using namespace std;
#define ADAUGA 1
#define STERGE 2
#define VERIFICA 3
#define MOD 666013
#define key(x) x % MOD
vector<int> v[MOD];
inline vector<int>::iterator gaseste(int x, int k)
{
vector<int>::iterator i;
for(i = v[k].begin(); i != v[k].end(); ++i)
if(*i == x)
return i;
return v[k].end();
}
void adauga(int x, int k)
{
if(gaseste(x, k) == v[k].end())
v[k].push_back(x);
}
void sterge(int x, int k)
{
vector<int>::iterator i = gaseste(x, k);
if(i != v[k].end())
v[k].erase(i);
}
int main()
{
int operatie, x, n;
FILE* fi = fopen("hashuri.in", "r");
FILE* fo = fopen("hashuri.out", "w");
fscanf(fi, "%d", &n);
while(n--)
{
fscanf(fi, "%d%d", &operatie, &x);
if(operatie == ADAUGA) adauga(x, key(x));
if(operatie == STERGE) sterge(x, key(x));
if(operatie == VERIFICA)
{
int k = key(x);
if(gaseste(x, k) == v[k].end()) fprintf(fo, "0\n");
else fprintf(fo, "1\n");
}
}
fclose(fi);
fclose(fo);
return 0;
}