Nu aveti permisiuni pentru a descarca fisierul grader_test7.in
Cod sursa(job #1037081)
| Utilizator | Data | 19 noiembrie 2013 21:00:22 | |
|---|---|---|---|
| Problema | Dtcsu | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 1.06 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');
if(N)
{
N/=(N&(-N));
int st=0,dr=v.size()-1;
while(st<=dr)
{
int mij=(st+dr)/2;
if(v[mij]==N){++sol;st=dr+1;}
else if(v[mij]<N)st=mij+1;
else dr=mij-1;
}
}
}
g<<sol<<'\n';
f.close();g.close();
return 0;
}
