Cod sursa(job #1502743)

Utilizator Ionut228Ionut Calofir Ionut228 Data 14 octombrie 2015 23:22:31
Problema Dtcsu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <fstream>
#include <cstring>
#include <vector>

using namespace std;

ifstream fin("dtcsu.in");
ofstream fout("dtcsu.out");

const int MOD = 257;

char sir[25];
int Q, lg, sol;
long long N;
vector<long long> H[MOD + 5];

int verify(long long x)
{
    if (H[x % MOD].size() == 0)
        return 0;

    int ok = 0, key = x % MOD;
    for(vector<long long>::iterator it = H[key].begin(); it != H[key].end(); ++it)
        if (*it == x)
        {
            ok = 1;
            break;
        }

    return ok;
}

int main()
{
    long long x;
    for (int i = 1; i <= 276997; ++i)
    {
        fin.getline(sir + 1, 25);
        lg = strlen(sir + 1);
        x = 0LL;
        for (int j = 1; j <= lg; ++j)
            x = x * 10 + (long long)(sir[j] - '0');
        H[x % MOD].push_back(x);
    }
    fin.getline(sir + 1, 25);
    lg = strlen(sir + 1);
    for (int i = 1; i <= lg; ++i)
        Q = Q * 10 + (int)(sir[i] - '0');
    while (Q--)
    {
        fin.getline(sir + 1, 25);
        lg = strlen(sir + 1);
        N = 0LL;
        for (int i = 1; i <= lg; ++i)
            N = N * 10 + (long long)(sir[i] - '0');

        sol += verify(N);
    }

    fout << sol << '\n';

    fin.close();
    fout.close();
    return 0;
}