Cod sursa(job #2790561)

Utilizator TanasucaGeorgeAlexandruTanasucaGeorgeAlexandru TanasucaGeorgeAlexandru Data 29 octombrie 2021 10:48:46
Problema Dtcsu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <bits/stdc++.h>
#define P 8191
using namespace std;
/**

*/

vector<long long> h[P];

void Adauga(long long x)
{
    int r = x % P;
    h[r].push_back(x);
}

int Cauta(long long x)
{
    int r = x % P;
    for (long long e : h[r])
        if (e == x) return 1;
    return 0;
}

/**
Se da un sir a1, a2, ..., an. Sa se verifice daca exista doua
elemente egale in sir.
8
1 5 2000000000 17 5 2 18 3
*/
ifstream fin("dtcsu.in");
ofstream fout("dtcsu.out");
int main()
{
    int i, Q, cnt = 0;
    long long x;
    for (i = 1; i <= 276997; i++)
    {
        fin >> x;
        if(x>0) x/=(x&(-x));
        if (Cauta(x) == 0)
            Adauga(x);
    }
    fin >> Q;
    for (i = 1; i <= Q; i++)
    {
        fin >> x;
        if(x>0) x/=(x&(-x));
        cnt += Cauta(x);
    }
    fout << cnt << "\n";
    fout.close();
    return 0;
}