Pagini recente » Cod sursa (job #1622291) | Cod sursa (job #968752) | Cod sursa (job #1845428) | Cod sursa (job #3162828) | Cod sursa (job #1973196)
#include <cstdio>
#include <ctype.h>
const int HASH = 30103;
const int WHAT = 276997;
const int HASH2 = 1000000009;
const int BUFF = 4096;
int* v[HASH];
int size[HASH], top[HASH];
FILE *fin;
int curr = BUFF - 1;
char buff[BUFF];
char getch() {
curr++;
if(curr == BUFF) {
fread(buff, 1, BUFF, fin);
curr = 0;
}
return buff[curr];
}
long long getnr() {
char ch;
ch = getch();
while(!isdigit(ch))
ch = getch();
long long nr = 0LL;
while(isdigit(ch)) {
nr = nr * 10 + ch - '0';
ch = getch();
}
return nr;
}
int main() {
int rez, q;
long long x;
rez = 0;
fin = fopen("dtcsu.in", "r");
for(int i = 0; i < WHAT; ++i) {
x = getnr();
if(x % 2 == 1) {
x = x % HASH2;
size[x % HASH]++;
}
}
for(int i = 0; i < HASH; ++i)
v[i] = new int[size[i]];
fseek(fin, 0, SEEK_SET);
curr = BUFF - 1;
for(int i = 0; i < WHAT; ++i) {
x = getnr();
if(x % 2 == 1) {
x = x % HASH2;
int h = x % HASH;
v[h][top[h]++] = x;
}
}
q = getnr();
for(int i = 0; i < q; ++i) {
x = getnr();
x = x / (x & (-x));
x = x % HASH2;
int box = x % HASH;
int j = 0;
while(j < size[box] && v[box][j] != x)
++j;
if(j < size[box])
++rez;
}
fclose(fin);
FILE *fout = fopen("dtcsu.out", "w");
fprintf(fout, "%d", rez);
fclose(fout);
return 0;
}