Cod sursa(job #2223502)

Utilizator razviii237Uzum Razvan razviii237 Data 20 iulie 2018 14:31:07
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.33 kb
//prima sursa e buna
#include <iostream>
#include <cstdio>
#include <vector>

#define fs fscanf
#define fp fprintf

using namespace std;
typedef vector<int>::iterator vit;

FILE *f, *g;
const int mod = 50000;
vector <int> h[mod];

vit find_value(int x)
{
    int list_id = x % mod;
    for(vit it = h[list_id].begin(); it != h[list_id].end(); it ++)
        if(*it == x)
        return it;
    return h[list_id].end();
}

void insert_value(int x)
{
    int list_id = x % mod;
    if(find_value(x) == h[list_id].end())
        h[list_id].push_back(x);
}

void erase_value(int x)
{
    int list_id = x % mod;
    vit itv = find_value(x);
    if(itv != h[list_id].end())
        h[list_id].erase(itv);
}

void query(int x)
{
    int list_id = x % mod;
    vit itv = find_value(x);
    if(itv == h[list_id].end())
        fp(g, "0\n");
    else fp(g, "1\n");
}

int main()
{
    f = fopen("hashuri.in", "r");
    g = fopen("hashuri.out", "w");

    int n, i, x, y;

    fs(f, "%d", &n);

    for(i = 1; i <= n; i ++)
    {
        fs(f, "%d%d", &x, &y);
        if(x == 1){
            insert_value(y);
        }
        else if(x == 2){
            erase_value(y);
        }
        else if(x == 3){
            query(y);
        }
    }


    fclose(f);
    fclose(g);
    return 0;
}