Pagini recente » Cod sursa (job #2337676) | Cod sursa (job #3236245) | Cod sursa (job #1154068) | Cod sursa (job #304274) | Cod sursa (job #2686353)
#include <fstream>
#define MOD1 996637
#define BAZA1 42307
#define MOD2 136711
#define BAZA2 6113
#define BAZA 10
using namespace std;
ifstream cin( "hashuri.in" );
ofstream cout( "hashuri.out" );
int f1[ MOD1 + 1 ], p1[ MOD1 + 1 ];
int f2[ MOD2 + 1 ], p2[ MOD2 + 1 ];
int main()
{
int n, k, x;
cin >> n;
p1[ 0 ] = p2[ 0 ] = 1;
for( int i = 1; i < BAZA; i++ ){
p1[ i ] = ( ( long long )p1[ i - 1 ] * BAZA1 ) % MOD1;
p2[ i ] = ( ( long long )p2[ i - 1 ] * BAZA2 ) % MOD2;
}
while( n-- ){
string a;
cin >> k >> a;
int nr1 = 0, nr2 = 0;
for( int i = 0; i < a.size(); i++ ){
nr1 = ( nr1 + ( ( long long )p1[ i ] * ( a[ i ] - '0' ) ) ) % MOD1;
nr2 = ( nr2 + ( ( long long )p2[ i ] * ( a[ i ] - '0' ) ) ) % MOD2;
}
switch( k ){
case 1:
if( f1[ nr1 ] == 0 || f2[ nr2 ] == 0 )
++f1[ nr1 ],
++f2[ nr2 ];
break;
case 2:
if( f1[ nr1 ] != 0 && f2[ nr2 ] != 0 )
--f1[ nr1 ],
--f2[ nr2 ];
break;
case 3:
if( f1[ nr1 ] != 0 && f2[ nr2 ] != 0 )
cout << "1\n";
else cout << "0\n";
break;
}
}
return 0;
}