Pagini recente » Cod sursa (job #1999583) | Cod sursa (job #524825) | Cod sursa (job #2695884) | Cod sursa (job #2044657) | Cod sursa (job #2109138)
#include <bits/stdc++.h>
using namespace std;
#define buffSize 33554432
const int HASH_SIZE = 16383; /// ( 1 << 14 ) - 1
class myHash {
vector<int> v[HASH_SIZE + 1];
public:
inline bool check( int val ) {
unsigned int i, h;
h = val & HASH_SIZE;
i = 0;
while ( i < v[h].size() && v[h][i] != val )
i ++;
return ( i < v[h].size() );
}
inline bool pop( int val ) {
unsigned int i, h;
h = val & HASH_SIZE;
i = 0;
while ( i < v[h].size() && v[h][i] != val )
i ++;
if ( i < v[h].size() ) {
v[h][i] = v[h][v[h].size() - 1];
v[h].pop_back();
}
return ( i < v[h].size() );
}
inline void push( int val ) {
unsigned int h = val & HASH_SIZE;
v[h].push_back( val );
}
}m;
char buffer[buffSize];
int i = buffSize - 1;
inline int get_nr()
{
int x = 0;
while(buffer[i] < 48 | buffer[i] > 57)
if(++i == buffSize) fread(buffer, 1, buffSize, stdin), i = 0;
while(buffer[i] > 47 & buffer[i] < 58)
{
x = x * 10 + buffer[i] - 48;
if(++i == buffSize) fread(buffer, 1, buffSize, stdin), i = 0;
}
return x;
}
int main()
{
freopen("hashuri.in", "r", stdin);
freopen("hashuri.out", "w", stdout);
int T, Q, x, i = -1;
T = get_nr();
while(T--)
{
Q = get_nr();
x = get_nr();
if(Q == 1) m.push(x);
if(Q == 2) m.pop(x);
if(Q == 3)
{
buffer[++i] = 48 + m.check(x);
buffer[++i] = 10;
}
}
buffer[++i] = 0;
puts(buffer);
return 0;
}