Cod sursa(job #3130404)

Utilizator ecaterinaEcaterina Stefanescu ecaterina Data 17 mai 2023 18:38:26
Problema Dtcsu Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.35 kb
#include <iostream>
#include <stdio.h>
#include <vector>
#include <cstring>
#include <algorithm>

using namespace std;

#define NMAX 2002
#define HASHSIZE 1024
#define IDK 276997

vector <long long int> hsh[HASHSIZE];

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

void add(int x) {
    int i;
    long long int cod;
    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) {
    int i;
    long long int cod;
    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("dctsu.in", "r");
    fout = fopen("dctsu.out", "w");
    
    int i, x, q, qq, nr;
    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, "%d", &q);
    for (qq=0; qq<q; qq++) {
        fscanf(fin, "%d", &x);
        if (search(x)) {
            nr++;
        }
    }
    
    fprintf(fout, "%d", nr);
    
    fclose(fin);
    fclose(fout);
    return 0;
}