Cod sursa(job #1263414)

Utilizator atatomirTatomir Alex atatomir Data 14 noiembrie 2014 18:48:26
Problema Dtcsu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <iostream>
#include <cstdio>
#include <vector>

using namespace std;

#define V 276997
#define mod 10000
#define maxBuf 10000

long Q,i;
vector<long long> H[mod];

char Buff[maxBuf];
long pos,Ans;
long long x;

inline bool isDigit(char c){
    return c >= '0' && c <= '9';
}
long long getLong(){
    while(!isDigit(Buff[pos])){
        pos++;
        if(pos == maxBuf){
            pos = 0;
            fread(Buff,1,maxBuf,stdin);
        }
    }
    long long Ans=0;
    while(isDigit(Buff[pos])){
        Ans = Ans*10 + Buff[pos++] - '0';
        if(pos == maxBuf){
            pos = 0;
            fread(Buff,1,maxBuf,stdin);
        }
    }
    return Ans;
}

bool isGood(long sour,long long x){
    for(long i=0;i<H[sour].size();i++)
        if(H[sour][i] == x) return true;
    return false;
}

int main()
{
    freopen("dtcsu.in","r",stdin);
    freopen("dtcsu.out","w",stdout);
    fread(Buff,1,maxBuf,stdin);

    for(i=1;i<=V;i++){
        x = getLong();
        if(x&1) H[x%mod].push_back(x);
    }

    Q = getLong();
    for(;Q;Q--){
        x = getLong();
        if((x&1)==0) x >>= 1;
        long dest = x % mod;
        if(isGood(dest,x)) Ans++;
    }

    printf("%ld",Ans);

    return 0;
}