Cod sursa(job #1786314)

Utilizator akaprosAna Kapros akapros Data 22 octombrie 2016 19:29:57
Problema Dtcsu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <bits/stdc++.h>
#include <unordered_set>
#define maxL 276997
#define ll long long
#define DIM 8192
using namespace std;

unordered_set < ll > H;
int ans;
ll q;

char buffer[DIM];
int position=0;

FILE *fin = freopen("dtcsu.in", "r", stdin);
FILE *fout = freopen("dtcsu.out", "w", stdout);

void read(ll &number)
{
    number=0;
    while(buffer[position]<'0'||buffer[position]>'9')
    {
        position++;
        if(position==DIM)
        {
            fread(buffer,1,DIM,stdin);
            position=0;
        }
    }
    while(buffer[position]>='0'&&buffer[position]<='9')
    {
        number=number*10+buffer[position]-'0';
        position++;
        if(position==DIM)
        {
            fread(buffer,1,DIM,stdin);
            position=0;
        }
    }
}
void Read()
{
    int i;
    ll x;
    for (i = 1; i <= maxL; ++ i)
    {
        read(x);
        if (x & 1)
            H.insert(x);
    }
}
void solve()
{
    ll x;
    read(q);
    while (q --)
    {
        read(x);
        if (x && H.find(x / (x & (-x))) != H.end())
            ++ ans;
    }
}
void write()
{
    printf("%d\n", ans);
}
int main()
{
    Read();
    solve();
    write();
    return 0;
}