Cod sursa(job #3350816)

Utilizator filipdanieloanFilip-Daniel Oancea filipdanieloan Data 13 aprilie 2026 16:18:05
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.24 kb
#include <stdio.h>

const int kMod = 1000003;

struct elem {
    int V;
    elem *next;
    elem() {
        V = -1;
        next = nullptr;
    }
}hash[kMod];

FILE *fin, *fout;
int n;

void add(int x) {
    elem *p = &hash[x % kMod];
    while ((*p).next != nullptr) {
        p = (*p).next;
    }
    (*p).next = new elem;
    (*((*p).next)).V = x;
}

void remove(int x) {
    elem *p = &hash[x % kMod];
    while ((*p).next != nullptr && (*p).V != x) {
        p = (*p).next;
    }
    if ((*p).V != x) {
        return;
    }
    (*p).V = -1;
}

bool query(int x) {
    elem *p = &hash[x % kMod];
    while ((*p).next != nullptr && (*p).V != x) {
        p = (*p).next;
    }
    if ((*p).V != x) {
        return false;
    } else {
        return true;
    }
}

int main(void) {
    #ifdef LOCAL
    #define fin stdin
    #define fout stdout
    #else
    fin = fopen("hashuri.in", "r");
    fout = fopen("hashuri.out", "w");
    #endif

    fscanf(fin, "%d", &n);

    for(int i = 0; i < n; ++i) {
        int op, x;
        fscanf(fin, "%d%d", &op, &x);
        if(op == 1)
            add(x);
        else if(op == 2)
            remove(x);
        else
            fprintf(fout, "%d\n", query(x));
    }

    fclose(fin);
    fclose(fout);

    return 0;
}