Pagini recente » Cod sursa (job #2595533) | Cod sursa (job #940680) | Cod sursa (job #664181) | Cod sursa (job #2446795) | Cod sursa (job #1609722)
#include <iostream>
#include <stdbool.h>
#include <stdio.h>
#define N 62500000
using namespace std;
typedef unsigned long ul;
ul b[N];
bool getb(ul &boolv, ul pos)
{
return (boolv >> pos) & 1;
}
void setb(ul &boolv, ul pos, bool val)
{
boolv ^= (-(val & 1) ^ boolv) & (1 << pos);
}
template <typename T>
void print(T n)
{
cout << sizeof(n) * 8 << "b: ";
for(int i = sizeof(n) * 8; i >= 0; i--)
{
cout << (n >> i & 1);
}
cout << endl;
}
int main()
{
int opt;
long nrOperatii;
long nr;
FILE * fread = fopen("hashuri.in","r");
FILE * fwrite = fopen("hashuri.out","w");
fscanf(fread, "%lu", &nrOperatii);
for(long i = 0; i < nrOperatii; i++)
{
fscanf(fread, "%lu", &opt);
fscanf(fread, "%lu", &nr);
switch(opt)
{
case(1):
setb(b[nr / N], nr, true);
break;
case(2):
setb(b[nr / N], nr, false);
break;
case(3):
bool exists = getb(b[nr / N], nr);
fprintf(fwrite, "%d", exists);
break;
}
}
fclose(fread);
fclose(fwrite);
return 0;
}