Cod sursa(job #1034451)

Utilizator PetcuIoanPetcu Ioan Vlad PetcuIoan Data 17 noiembrie 2013 20:36:42
Problema Dtcsu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#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;
}