Cod sursa(job #2967105)

Utilizator memecoinMeme Coin memecoin Data 19 ianuarie 2023 01:32:16
Problema Hashuri Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.87 kb
#include <fstream>
#include <string>
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <math.h>
#include <set>
#include <map>
#include <string.h>
#include <queue>
#include <stack>
#include <iostream>

#define INF 0x3f3f3f3f

using namespace std;

#ifdef DEBUG
string name = "data";
#else
string name = "hashuri";
#endif

ifstream fin(name + ".in");
ofstream fout(name + ".out");

#define MAXN 4000000

int h[MAXN];

// linear probing

void insert(int x) {
    int k = x % MAXN;
    
    for (int i = k; i < MAXN; ++i) {
        if (h[k] == 0) {
            h[k] = x;
            return;
        }
    }
    
    for (int i = 0; i < k; ++i) {
        if (h[k] == 0) {
            h[k] = x;
            return;
        }
    }
}

void del(int x) {
    int k = x % MAXN;
        
    for (int i = k; i < MAXN; ++i) {
        if (h[k] == 0) {
            return;
        }
        
        if (h[k] == x) {
            h[k] = 0;
            return;
        }
    }
    
    for (int i = 0; i < k; ++i) {
        if (h[k] == 0) {
            return;
        }
        
        if (h[k] == x) {
            h[k] = 0;
            return;
        }
    }

}

int find(int x) {
    int k = x % MAXN;
        
    for (int i = k; i < MAXN; ++i) {
        if (h[k] == 0) {
            return 0;
        }
        
        if (h[k] == x) {
            return 1;
        }
    }
    
    for (int i = 0; i < k; ++i) {
        if (h[k] == 0) {
            return 0;
        }
        
        if (h[k] == x) {
            return 1;
        }
    }
    
    return 0;
}

int main() {
    int n;
    fin >> n;
    for (int i = 0; i < n; ++i) {
        int op, x;
        fin >> op >> x;
        
        if (op == 1) {
            insert(x);
        }
        if (op == 2) {
            del(x);
        }
        if (op == 3) {
            fout << find(x) << "\n";
        }
    }
    
   
    
    return 0;
}