Pagini recente » Cod sursa (job #1694709) | Cod sursa (job #2492246) | Cod sursa (job #1300547) | Cod sursa (job #1329588) | Cod sursa (job #1732258)
#include <cstdio>
#include<vector>
#include<ctype.h>
#define MOD2 16383
#define MOD1 32767
#define BUF_SIZE 4096
#define MAXN 276997
using namespace std;
vector<unsigned short int>v[MOD1];
int pos=BUF_SIZE;
char buf[BUF_SIZE];
inline char getChar(FILE *f)
{
if(pos==BUF_SIZE)
{
fread(buf, 1, BUF_SIZE, f);
pos=0;
}
return buf[pos++];
}
inline long long getNumber(FILE *f)
{
long long nr=0;
char c;
c=getChar(f);
while(!isdigit(c))
c=getChar(f);
while(isdigit(c))
nr=nr*10+c-'0', c=getChar(f);
return nr;
}
inline void adauga(int key1, unsigned short int key2)
{
v[key1].push_back(key2);
}
inline int check(long long x)
{
int key1=(x&MOD1), sz;
unsigned short int key2=(x&MOD2);
sz=v[key1].size();
for(int i=0;i<sz;++i)
if(v[key1][i] == key2)
return 1;
return 0;
}
int main()
{
FILE *fin, *fout;
fin=fopen("dtcsu.in", "r");
fout=fopen("dtcsu.out", "w");
long long x, q, nr=0;
for(int i=1;i<=MAXN;++i)
{
x=getNumber(fin);
adauga((x&MOD1), (x&MOD2));
}
q=getNumber(fin);
for(int i=1;i<=q;++i)
{
x=getNumber(fin);
nr+=check(x);
}
fprintf(fout, "%lld", nr);
return 0;
}