Cod sursa(job #1039451)

Utilizator maritimCristian Lambru maritim Data 23 noiembrie 2013 02:10:09
Problema Dtcsu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<cstdio>
#include<cstdlib>
#include<ctype.h>
#include<iostream>
//#include<unordered_set>
#include<set>
using namespace std;

FILE *f = fopen("dtcsu.in","r");
FILE *g = fopen("dtcsu.out","w");

#define MaxS 100
#define M 276997
#define ll long long

int T,Sol;
ll x;
char S[MaxS];
set<ll> Q;

inline ll getInt(void)
{
    ll nr = 0;

    for(int i=0;isdigit(S[i]);nr = nr * 10 + S[i++]-'0');

    return nr;
}


void citire(void)
{
    ll x;

    for(int i=1;i<=M;i++)
    {
        fgets(S,sizeof(S),f);
        x = getInt();
        if(x&1)
            Q.insert(x);
    }
}

inline int exist(ll val)
{
    for(;(val&1) == 0;val >>= 1);

    //cout << val << "\n";
    if(Q.find(val) != Q.end())
        return 1;
    return 0;
}

int main()
{
    citire();
    fscanf(f,"%d\n",&T);
    for(int i=1;i<=T;i++)
    {
        fgets(S,sizeof(S),f);
        x = getInt();

        Sol += exist(x);
    }

    fprintf(g,"%d\n",Sol);
}