Pagini recente » Cod sursa (job #2246278) | Cod sursa (job #2649582) | Cod sursa (job #1140693) | Cod sursa (job #2848630) | Cod sursa (job #1488027)
#include <bits/stdc++.h>
#define itt std::vector<int>::iterator
using namespace std;
int Z = -1;
vector<int> v;
int poz(int x, int p, int q) {
if(p > q) {
return min(Z, p);
}
int m = (q - p) / 2 + p;
if(v.at(m) > x) {
return poz(x, p, m - 1);
}
else if(v.at(m) < x)
return poz(x, m + 1, q);
else return m;
}
void bag(int x) {
if(Z == -1)
v.push_back(x), Z++, sort(v.begin(), v.end());
else {
int p = poz(x, 0, Z);
if(v.at(p) != x)
v.push_back(x), Z++, sort(v.begin(), v.end());
}
}
void scot(int x) {
if(Z == -1) return;
int p = poz(x, 0, Z);
if(v.at(p) == x) {
for(int i = p; i < Z; i ++)
v.at(i) = v.at(i + 1);
v.erase(v.end() - 1);
Z--;
}
}
int main()
{
FILE *f = fopen("hashuri.in", "r");
FILE *g = fopen("hashuri.out", "w");
int n, op, x;
fscanf(f, "%d", &n);
while(n) {
fscanf(f, "%d %d", &op, &x);
if(op == 1) bag(x);
else if(op == 2) scot(x);
else {
if(Z == -1) fprintf(g, "0\n");
else {
int p = poz(x, 0, Z);
if(v[p] == x)
fprintf(g, "1\n");
else fprintf(g, "0\n");
}
}
n --;
}
return 0;
}