Pagini recente » Borderou de evaluare (job #1617086) | Cod sursa (job #2763510) | Borderou de evaluare (job #3213684) | Borderou de evaluare (job #411418) | Cod sursa (job #2760137)
#include <fstream>
using namespace std;
const int N = 1000001;
const int MOD = 666019;
ifstream in("hashuri.in");
ofstream out("hashuri.out");
int val[N], urm[N], lst[MOD], nr;
bool exista(int x) {
int c=x%MOD;
for (int p=lst[c]; p!=0; p=urm[p]) {
if (val[p]==x) {
return true;
}
}
return false;
}
void adauga(int x) {
int c=x%MOD;
if (exista(x)) return;
val[++nr]=x;
urm[nr]=lst[c];
lst[c]=nr;
}
void sterge(int x) {
int c=x%MOD,p=lst[c];
while (p!=0 && val[p]!=x) {
p=urm[p];
}
if (p!=0) {
val[p]=val[lst[c]];
lst[c]=urm[lst[c]];
}
}
int main() {
int n,cer,a;
in>>n;
for(int i=0; i<n; i++) {
in>>cer>>a;
if (cer==1) adauga(a);
else if (cer==2) sterge(a);
else out<<exista(a)<<'\n';
}
return 0;
}