Pagini recente » Cod sursa (job #1118227) | Cod sursa (job #1977416) | Cod sursa (job #333334) | Cod sursa (job #95438) | Cod sursa (job #1929635)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("hashuri.in"); ofstream g("hashuri.out");
int n,c,nr,p,j,a[1000001],x,i; bool ok;
int cautbin(int x) {
int st = 1, dr = nr, mij, last = nr;
while (st <= dr) {
mij = (st + dr) / 2;
if (a[mij] == x) {
ok = 0;
break;
}
if (a[mij] > x) {
dr = mij - 1;
last = mij;
}
if (a[mij] < x) {
st = mij + 1;
}
}
return last;
}
int cautbin2(int x) {
int st = 1, dr = nr, mij;
ok = 0;
while (st <= dr) {
mij = (st + dr) / 2;
if (a[mij] == x) {
ok = 1;
break;
}
if (a[mij] > x) {
dr = mij - 1;
}
if (a[mij] < x) {
st = mij + 1;
}
}
return mij;
}
int main()
{
f>>n;
nr = 0;
for(i = 1; i <= n; ++i) {
f>>c>>x;
if ( c == 1) {
ok = 1;
p = cautbin(x);
if (ok) {
if (p == nr && x > a[nr]) {
++nr;
a[nr] = x;
}
else {
++nr;
for( j = nr; j > p; --j) {
a[j] = a[j-1];
}
a[p] = x;
}
}
}
if ( c == 2) {
ok = 1;
p = cautbin2(x);
if (ok) {
for( j = p; j < nr; ++j) {
a[j] = a[j+1];
}
--nr;
}
}
if ( c == 3) {
ok = 1;
p = cautbin2(x);
if (ok) {
g<<1<<'\n';
}
else g<<0<<'\n';
}
}
return 0;
}