Cod sursa(job #1259021)

Utilizator ArmandNMArmand Nicolicioiu ArmandNM Data 9 noiembrie 2014 17:17:45
Problema Dtcsu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
#include <vector>
#include <cstring>

const int NMAX = 10005;

using namespace std;
ifstream f("dtcsu.in");
ofstream g("dtcsu.out");

long long Q,nr,contor;
char s[20];
vector <long long> HH[NMAX];

void decode()
{
    nr = 0;
    int l = strlen(s);
    long long p = 1;
    for (int i = l-1; i >= 0; --i)
    {
        nr += int(s[i]-'0')*p;
        p /= 10;
    }
}

int key(long long nr)
{
    return (nr % 10000);
}

void add(int nr)
{
    HH[key(nr)].push_back(nr);
}

bool find(long long x)
{
    int k = key(x);
    for (int i = 0; i < HH[k].size(); ++i)
    {
        if (HH[k][i] == x)
            return true;
    }
    return false;
}

int main()
{
    for (int i = 1; i <= 276997; ++i)
    {
        f.getline(s,20);
        nr = 0;
        decode();
        add(nr);
    }

    f >> Q;
    f.getline(s,20);

    for (int i = 1; i <= Q; ++i)
    {
        f.getline(s,20);
        nr = 0;
        decode();
        if (find(nr))
            contor++;
    }

    g << contor;

    f.close();
    g.close();
    return 0;
}