Cod sursa(job #1520264)

Utilizator MayuriMayuri Mayuri Data 8 noiembrie 2015 15:59:36
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.37 kb
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

const int PRIM = 666013;
vector <int> H[666015];

void tip_Unu(int a) {
    int r, n;
    bool exista = 0;
    r = a % PRIM;
    n = H[r].size();

    for(int i = 0; i < n; ++ i) {
        if(H[r][i] == a) {
            exista = 1;
            break;
        }
    }

    if(!exista)
        H[r].push_back(a);
}

void tip_Doi(int a) {
    int r, n;
    bool exista = 0;
    r = a % PRIM;
    n = H[r].size();

    for(int i = 0; i < n; ++ i) {
        if(H[r][i] == a) {
            exista = 1;
            swap(H[r][i], H[r][n - 1]);
            break;
        }
    }

    if(exista)
        H[r].pop_back();
}

void tip_Trei(int a) {
    int r, n;
    bool exista = 0;
    r = a % PRIM;
    n = H[r].size();

    for(int i = 0; i < n; ++ i) {
        if(H[r][i] == a) {
            exista = 1;
            break;
        }
    }
    printf("%d\n", exista);
}

int main() {
    freopen("hashuri.in", "r", stdin);
    freopen("hashuri.out", "w", stdout);

    int n, x, a;
    scanf("%d", &n);

    for(int i = 1; i <= n; ++ i) {
        scanf("%d%d", &x, &a);
        if(x == 1) {
            tip_Unu(a);
        } else
        if(x == 2) {
            tip_Doi(a);
        } else {
            tip_Trei(a);
        }
    }

    return 0;
}