Pagini recente » Cod sursa (job #1260681) | Cod sursa (job #2857144) | Cod sursa (job #385158) | Cod sursa (job #2795819) | Cod sursa (job #1048288)
#include <fstream>
#include <cstdio>
#include <bitset>
using namespace std;
const int N = 276997;
int Q,out;
const int maxb=200000;
int ptr=0;
char buff[maxb];
inline long long GetLong (long long &nr)
{
nr=0;
while (buff[ptr]<'0' || buff[ptr]>'9')
if ((++ptr)>=maxb)
{
ptr=0;
fread(buff, 1, maxb, stdin);
}
while (buff[ptr]>='0' && buff[ptr]<='9')
{
nr=nr*10+buff[ptr]-'0';
if ((++ptr)>=maxb)
{
ptr=0;
fread(buff, 1, maxb, stdin);
}
}
return nr;
}
const int f_size = 1000010;
const int mod[] = { 666013, 1000003 , 826663 , 797593 , 959473, (1<<19)-1 };
bitset<f_size> filter[6];
void insert(long long x)
{
for (int i=0;i<6;++i)
filter[i][ x%mod[i] ] = 1;
}
int find(long long x)
{
for (int i=0;i<6;++i)
if ( filter[i][ x%mod[i] ] == 0 )
return 0;
return 1;
}
long long X;
int main()
{
freopen("dtcsu.in","r",stdin);
freopen("dtcsu.out","w",stdout);
fread(buff, 1, maxb, stdin);
for (int i=1;i<=N;++i)
{
long long X;
GetLong(X);
for (int i=0;i<6;++i)
filter[i][ X%mod[i] ] = 1;
}
GetLong(X);
Q = X;
for (;Q;--Q)
{
GetLong(X);
bool ok = 1;
for (int i=0;i<6 && ok;++i)
if ( filter[i][ X%mod[i] ] == 0 )
ok = 0;
if ( ok )
{
++out;
}
}
printf("%d\n",out);
}