Cod sursa(job #1035318)

Utilizator rares96cheseliRares Cheseli rares96cheseli Data 18 noiembrie 2013 14:53:13
Problema Dtcsu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
#include <algorithm>
#include <vector>
#include <cstring>
using namespace std;
ifstream f("dtcsu.in");
ofstream g("dtcsu.out");

string c;
int Q, sol, dim;
long long nr;
vector < long long > H;

int main()
{
    for (int i=1; i<=276997; ++i)
    {
        getline(f, c);
        nr=0; dim=c.size();

        for (int i=0; i<dim;++i)
            nr=nr*10+(c[i]-'0');

        if (nr%2)
            H.push_back(nr);
    }

    sort(H.begin(), H.end());
    f>>Q;
    for (int i=1; i<=Q; ++i)
    {
        getline(f, c);
        nr=0; dim=c.size();

        for (int i=0; i<dim; ++i)
            nr=nr*10+(c[i]-'0');

        if (nr)
        {
            nr/=(nr&(-nr));
            //if (binary_search(H.begin(), H.end(), nr)) ++sol;
            int st=0, dr=H.size()-1;
            while (st<=dr)
            {
                int mij=(st+dr)/2;
                if (H[mij]==H[nr]) ++sol, st=dr+1;
                    else if (H[mij]>nr) dr=mij-1;
                        else st=mij+1;
            }
        }
    }
    g<<sol<<'\n';
    return 0;
}