Pagini recente » Cod sursa (job #2004774) | Clasament testround13 | Cod sursa (job #1312070) | Cod sursa (job #152845) | Cod sursa (job #1034451)
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
char pars[22];
int p;
inline void nex(long long &t){
p = t = 0;
gets(pars);
while(pars[p] <= '9' && pars[p] >= '0'){
t = t * 10 + pars[p] - '0';
++p;
}
}
long long gv[125000];
int l, r, mid;
bool opti;
inline int bs(long long & t){
l = 1, r = gv[0];
while(l <= r){
mid = (l + r) >> 1;
if(gv[mid] > t)
r = ((l + r) >> 1) - 1;
else if(gv[mid] == t)
return 1;
else
l = ((l + r) >> 1) + 1;
}
return 0;
}
int main(){
freopen("dtcsu.in", "r", stdin);
freopen("dtcsu.out", "w", stdout);
long long t;
for(int i = 1; i <= 276997; ++i){
nex(t);
if(t & 1)
gv[++gv[0]] = t;
}
sort(gv + 1, gv + gv[0] + 1);
long long q;
int ans = 0;
nex(q);
for(int i = 1; i <= q; ++i){
nex(t);
if(t){
t /= (t & -t);
if(bs(t))
++ans;
}
}
printf("%d", ans);
return 0;
}