Pagini recente » Cod sursa (job #1798829) | Cod sursa (job #2789985) | Cod sursa (job #2355345) | Cod sursa (job #2765161) | Cod sursa (job #1237455)
#include <iostream>
#include <fstream>
#define R 9973
#define M 1000000
using namespace std;
fstream in ( "hashuri.in" , ios::in ),
out( "hashuri.out", ios::out);
int lst[R], val[M], urm[M], m;
bool apartine(int x){
int p = lst[x%R];
while( p!= -1 ){
if( val[p] == x );
return true;
p = urm[p];
}
return false;
}
void adauga( int x ){
int r = x % R;
if( apartine( x ) ) return;
val[m] = x;
urm[m++]= lst[ r ];
lst[ r ] = m-1;
}
void sterge( int x){
int r = x%R, p = lst[r];
if( x == val[p] )
lst[ r ] = urm[ p ];
while( urm[p] != -1 ){
if( val[urm[p]] == x ){
urm[p] = urm[urm[p]];
}
p=urm[p];
}
}
int main(){
int n, a, b;
in >> n;
for(int i=0; i<R; i++){
lst[i] = -1;
}
for(int i=0; i<n; i++){
urm[i] = -1;
}
for(int i=0; i<n; i++ ){
in >> a >> b;
if( a==1 ) adauga( b );
if( a==2 ) sterge( b );
if( a==3 ) out << apartine( b ) <<'\n';
}
return 0;
}