Pagini recente » Cod sursa (job #1386209) | Cod sursa (job #3040621) | Cod sursa (job #2206820) | Cod sursa (job #808815) | Cod sursa (job #2792137)
#include <stdio.h>
#include <ctype.h>
#include <unordered_set>
using namespace std;
#define int64 long long
#define NO_NUMBERS 276997
FILE *fin, *fout;
#define BUF_SIZE 4096
char buf[BUF_SIZE];
int pos = BUF_SIZE;
inline char getChar() {
if (pos == BUF_SIZE) {
fread(buf, 1, BUF_SIZE, fin);
pos = 0;
}
return buf[pos++];
}
inline int64 readInt64() {
int64 result = 0;
char c;
do {
c = getChar();
} while (!isdigit(c));
do {
result = result * 10 + c - '0';
c = getChar();
} while (isdigit(c));
return result;
}
int64 removePow2(int64 x) {
int step;
step = 32;
while (step) {
if ((x & (((int64)1 << step) - 1)) == 0)
x >>= step;
step >>= 1;
}
return x;
}
unordered_set<int64> myHash;
int main() {
fin = fopen("dtcsu.in", "r");
fout = fopen("dtcsu.out", "w");
int i, q, counter;
int64 x;
for (i = 0; i < NO_NUMBERS; ++i) {
x = readInt64();
if (x & 1)
myHash.insert(x);
}
counter = 0;
q = readInt64();
while (q--) {
x = readInt64();
x = removePow2(x);
counter += myHash.find(x) != myHash.end();
}
fprintf(fout, "%d\n", counter);
fclose(fin);
fclose(fout);
return 0;
}