Cod sursa(job #1035247)

Utilizator Dddarius95Darius-Florentin Neatu Dddarius95 Data 18 noiembrie 2013 14:18:56
Problema Dtcsu Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
#include <string>
#include <algorithm>
#include <vector>
#define Nmax 276997
using namespace std;

ifstream f("dtcsu.in");
ofstream g("dtcsu.out");

int Q,sol;
string tmp;

vector < long long > v;

int main()
{
    for(int i=1;i<=Nmax;++i)
    {
        getline(f,tmp);
        long long N=0;
        for(int i=0;i<tmp.size();++i)N=N*10+(tmp[i]-'0');
        if(N % 2==1)v.push_back(N);
    }
    sort(v.begin(),v.end());
    getline(f,tmp);
    Q=0;
    for(int i=0;i<tmp.size();++i)Q=Q*10+(tmp[i]-'0');

    for(int i=1;i<=Q;++i)
    {

        getline(f,tmp);
        long long N=0;
        for(int i=0;i<tmp.size();++i)N=N*10+(tmp[i]-'0');
        N/=(N&(-N));
        int st=0,dr=v.size()-1;
        while(st<=dr)
        {
            int mij=(st+dr)/2;
            if(v[mij]==N){++sol;break;}
            else if(v[mij]<N)st=mij+1;
            else dr=mij-1;
        }
    }
    g<<sol<<'\n';
    f.close();g.close();
    return 0;
}