Cod sursa(job #1038955)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 22 noiembrie 2013 12:03:44
Problema Dtcsu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>
#include <cstdio>
#define LG 500000
using namespace std;
int ind, sol, m;
char buffer[LG];
long long Q, N, v[110000];
 
inline void Citeste(long long &x)
{
    while(buffer[ind] < '0' || '9' < buffer[ind])
    {
        ind++;
        if(ind == LG)
        {
            fread(buffer,1,LG,stdin);
            ind=0;
        }
    }
    x = 0LL;
    while('0' <= buffer[ind] && buffer[ind] <= '9')
    {
        x = x * 10LL + buffer[ind] - '0';
        ind++;
        if(ind == LG)
        {
            fread(buffer,1,LG,stdin);
            ind=0;
        }
    }
}
 
int main()
{
    int i, poz;
	long long x;
    freopen("dtcsu.in","r",stdin);
    fread(buffer,1,LG,stdin);
	for(i = 1; i <= 276997; ++i)
	{
		Citeste(x);
		if(x % 2LL == 1LL)
			v[++m] = x;
	}
    Citeste(Q);
	while(Q--)
	{
		Citeste(N);
		if(N == 0LL)
			continue;
		N /= (N & -N);
		poz = lower_bound(v + 1, v + m + 1, N) - v;
		if(v[poz] == N)
			sol++;
	}
	
	freopen("dtcsu.out","w",stdout);
	printf("%d\n", sol);
    return 0;
}