Pagini recente » Cod sursa (job #1429107) | Cod sursa (job #1550579) | Cod sursa (job #1394932) | Cod sursa (job #357296) | Cod sursa (job #2205611)
#include <bits/stdc++.h>
#define SMAX 16384
#define N 276997
#define MOD 16127
#define ll long long
using namespace std;
struct node {
ll val;
node* next;
node(ll v, node* nn) : val(v), next(nn) {}
};
char s[SMAX];
int p;
FILE *f;
node* H[MOD];
void read(ll &x) {
x = 0;
for (; s[p] >= '0' && s[p] <= '9'; ++p) {
x = 10 * x + s[p] - '0';
if (p == SMAX - 1) {
fread(s, 1, SMAX, f);
p = -1;
}
}
for (; s[p] < '0' || s[p] > '9'; ++p) {
if (p == SMAX - 1) {
fread(s, 1, SMAX, f);
p = -1;
}
}
}
inline void insert(ll x) {
int pos = x % MOD;
node* it = H[pos];
for (; it != nullptr && it->val != x; it = it->next);
if (it == nullptr) {
node* nn = new node(x, H[pos]);
H[pos] = nn;
}
}
inline bool contains(ll x) {
int pos = x % MOD;
node* it = H[pos];
for (; it != nullptr && it->val != x; it = it->next);
return it != nullptr;
}
int main() {
f = fopen("dtcsu.in", "r");
FILE* g = fopen("dtcsu.out", "w");
fread(s, 1, SMAX, f);
p = 0;
for (int i = 0; i < N; ++i) {
ll x;
read(x);
insert(x);
}
ll n;
read(n);
int k = 0;
while (n--) {
ll x;
read(x);
if (contains(x)) {
++k;
}
}
fprintf(g, "%d\n", k);
return 0;
}