Pagini recente » Cod sursa (job #3191946) | Cod sursa (job #137514) | Cod sursa (job #81650) | Cod sursa (job #989944) | Cod sursa (job #1744814)
#include <bits/stdc++.h>
#define maxN 200002
#define maxB 31
#define maxC (1 << 30) + 1
using namespace std;
int n, q;
map < int, int > dp[maxB];
void read()
{
//freopen("d.in", "r", stdin);
scanf("%d\n", &q);
}
void solve()
{
int i;
for (i = 0; i < maxB; ++ i)
++ dp[i][0];
}
void write()
{
int i;
while (q --)
{
int x, y;
char s;
scanf("%c %d\n", &s, &x);
if (s == '+')
for (i = 0; i < maxB; ++ i)
++ dp[i][x >> i];
else if (s == '-')
for (i = 0; i < maxB; ++ i)
-- dp[i][x >> i];
else
{
y = 0;
for (i = maxB - 1; i >= 0; -- i)
{
y = (y << 1) | (((x >> i) & 1) ^ 1);
y ^= (!dp[i][y]);
}
printf("%d\n", x ^ y);
}
}
}
int main()
{
read();
solve();
write();
return 0;
}