Cod sursa(job #1041145)

Utilizator Kira96Denis Mita Kira96 Data 25 noiembrie 2013 16:09:29
Problema Dtcsu Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<fstream>
#include<algorithm>
#include<cstring>
#define DIM 100100
#define C 276997
using namespace std;
ifstream f("dtcsu.in");
ofstream g("dtcsu.out");
char s[DIM],ch;
long long nr,v[DIM];
int sol,st,dr,mij,t,q,k,nb,i,n;
long long read()
{
	long long nb=0;
		while(s[k]>='0'&&s[k]<='9')
			nb=nb*10+s[k++]-'0';
		k++;
	if(k>=DIM-2)
	{
		k=0;
		f.get(s,DIM-2,EOF);
		while(s[k]>='0'&&s[k]<='9')
			nb=nb*10+s[k++]-'0';
		k++;
	}
	return nb;
}
bool cb(long long x)
{
    while(!(x&1))
        x>>=1;
    st=1; dr=t;
    if(x>v[dr])
        return 0;
    while(st<=dr)
    {
        mij=(st+dr)>>1;
        if(x==v[mij])
            return 1;
        if(x>v[mij])
            st=mij+1;
        else
            dr=mij-1;
    }
    return 0;
}
int main ()
{
	f.get(s,DIM-2,EOF);
	for(i=1;i<=C;++i)
	{
		nr=read();
		if(nr&1)
		v[++t]=nr;
	}
	q=read();
	sort(v+1,v+t+1);
	while(q--)
	{
		nr=read();
		sol+=cb(nr);
	}
    g<<sol;
    return 0;
}