Cod sursa(job #1035897)

Utilizator RyuzakiL Lawliet Ryuzaki Data 18 noiembrie 2013 21:10:24
Problema Dtcsu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.39 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

#define MOD 1000007

typedef long long ll;
typedef vector<long long>::iterator iter;

// <parsing>
FILE *fin = fopen("dtcsu.in", "r");
unsigned const maxb = 8192;
char buf[maxb];
int ptr = maxb;

inline ll getLl() {
    while (buf[ptr] < '0' || '9' < buf[ptr]) {
        if (++ptr >= maxb) {
            fread(buf, maxb, 1, fin);
            ptr = 0;
        }
    }
    ll nr = 0;
    while ('0' <= buf[ptr] && buf[ptr] <= '9') {
        nr = nr * 10 + buf[ptr] - '0';
        if (++ptr >= maxb) {
            fread(buf, maxb, 1, fin);
            ptr = 0;
        }
    }
    return nr;
}
// </parsing>
ofstream g("dtcsu.out");

vector<ll> Hash[MOD];
ll q;

void insertHash(ll nr) {
    int mod = nr % MOD;
    Hash[mod].push_back(nr);
}

bool findHash(ll nr) {
    int mod = nr % MOD;

    for (iter it = Hash[mod].begin(); it != Hash[mod].end(); it++) {
        if (*it == nr) {
            return true;
        }
    }

    return false;
}

int main() {
    for (int i = 0; i < 276997; i++) {
        ll nr = getLl();
        insertHash(nr);
    }

    ll sol = 0;
    q = getLl();
    for (ll i = 1; i <= q; i++) {
        ll nr = getLl();
        if (findHash(nr) == true) {
            sol++;
        }
    }

    g << sol;

    g.close();
    return 0;
}