Cod sursa(job #3132685)

Utilizator ecaterinaEcaterina Stefanescu ecaterina Data 23 mai 2023 16:02:24
Problema Dtcsu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.4 kb
#include <iostream>
#include <stdio.h>
#include <vector>
#include <cstring>
#include <algorithm>

using namespace std;

#define HASHSIZE 10007
#define IDK 276997

vector <long long int> hsh[HASHSIZE];

long long int compute(long long int x) {
    return x%HASHSIZE;
}

void add(long long int x) {
    long long int cod, i;
    cod = compute(x);
    i=0;
    while (i<hsh[cod].size() && hsh[cod][i]!=x) {
        i++;
    }
    if (i==hsh[cod].size()) {
        hsh[cod].push_back(x);
    }
}

int search(long long int x) {
    long long int cod, i;
    cod = compute(x);
    i=0;
    while (i<hsh[cod].size() && hsh[cod][i]!=x) {
        i++;
    }
    return i!=hsh[cod].size();
}


int main() {
    FILE *fin, *fout;
    fin = fopen("dtcsu.in", "r");
    fout = fopen("dtcsu.out", "w");

    long long int i, q, qq, nr, x;
    char ch;

    for (i=0; i<IDK; i++) {
        ch = fgetc(fin);
        while (ch<'0' || ch>'9') {
            ch = fgetc(fin);
        }
        x = 0;
        while (ch>='0' && ch<='9') {
            x = x*10 + ch-'0';
            ch = fgetc(fin);
        }
        add(x);
    }

    nr = 0;
    fscanf(fin, "%lld", &q);
    for (qq=0; qq<q; qq++) {
        fscanf(fin, "%lld", &x);
        if (search(x)) {
            nr++;
        }
    }

    fprintf(fout, "%lld", nr);

    fclose(fin);
    fclose(fout);
    return 0;
}