Pagini recente » Cod sursa (job #2481825) | Cod sursa (job #3224544) | Cod sursa (job #774472) | Cod sursa (job #2403348) | Cod sursa (job #1705955)
#include <iostream>
#define eps 0.000001
#include <cmath>
#include <fstream>
#define maxim 1000000
using namespace std;
ifstream f("hashuri.in");
ofstream g("hashuri.out");
struct vect_ {
long long v[1000];
long long nrElem;
};
/*double radical ( double x ){
if ( x< 0 )
return -1;
double a, b;
if ( x > 0 && x< 1){
a = x;
b = 1;
}else{
a = 1;
b = x;
}
double mid;
while ( b-a >= eps ){
mid = ( a+b )/2;
if ( (a*a - x) * ( mid * mid - x ) <= 0 ){
b = mid;
}else
a = mid;
}
return mid;
}
*/
void IncarcaVector ( long long M, vect_ W[] ){
for ( int i = 0; i< M; i++ ){
W[i].nrElem = 0; //numarul initial de elemente este 0;
}
}
void inserareElementVector ( long long& lungime, long long v[1000], long long element ){
if ( lungime == 0 ) {
v[lungime] = element;
lungime ++;
}else{
int i = lungime-1; lungime ++;
while ( element <= v[i] ){
v[i+1] = v[i];
i--;
}
v[i+1] = element;
}
}
long BinarySearch ( long long lungime, long long v[1000], int st, int dr, long long x ){
if ( st > dr )
return -1;
else{
int mij = ( st + dr ) / 2;
if ( x == v[mij] )
return mij;
else{
if ( x < v[mij] )
return BinarySearch(lungime, v, st, mij-1, x);
else
return BinarySearch(lungime, v, mij+1, dr, x );
}
}
}
void stergeElementSir ( long long& lungime, long long sir[1000], long long x ){
long long poz = BinarySearch(lungime, sir, 0, lungime-1, x);
if ( poz == -1 )
return ;
for ( long long i = poz; i < lungime-1; i++ )
sir[i] = sir[i+1];
lungime --;
}
int main()
{
long long n;
f >> n;
long long M = sqrt(n) + 1;
vect_ W[M+1];
IncarcaVector(M, W);
long long op, numar;
for ( int p = 1; p <=n; p ++ ){
f >> op >> numar;
if ( op == 1) {
if ( BinarySearch(W[numar%M].nrElem, W[numar%M].v, 0, W[numar%M].nrElem-1, numar) == -1)
inserareElementVector(W[numar%M].nrElem, W[numar%M].v, numar);
}
if ( op == 2 ){
stergeElementSir(W[numar%M].nrElem, W[numar%M].v, numar);
}
if ( op == 3 ){
if ( BinarySearch(W[numar%M].nrElem, W[numar%M].v, 0, W[numar%M].nrElem-1, numar) != -1 )
g << "1 \n";
else
g <<"0 \n";
}
}
return 0;
}