Cod sursa(job #1674472)

Utilizator martonsSoos Marton martons Data 4 aprilie 2016 17:51:19
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.33 kb
#include <cstdio>

#define H_MOD 1000000
using namespace std;

struct elem{
    int val;
    elem* next;
};

elem* v[H_MOD];

bool exista(int x){
    int t=x%H_MOD;
    elem* it=v[t];

    while(it!=NULL){
        if(it->val==x)return true;
        it=it->next;
    }
    return false;
}

void sterge(int x){
    int t=x%H_MOD;
    elem* it=v[t];

    if(it==NULL)return;
    if(it->val==x){
        if(it->next==NULL){
            it->val=0;
        }
        else{
            v[t]=it->next;
        }
        return;
    }

    while(it->next!=NULL){
        if(it->next->val==x){
            (it->next)=(it->next->next);
            return;
        }
        it=it->next;
    }
}

void adauga(int x){
    if(!exista(x)){
        elem* n=new elem;
        n->val=x;
        n->next=v[x%H_MOD];
        v[x%H_MOD]=n;
    }
    return;
}

int main()
{
    int n;
    FILE* f=fopen("hashuri.in", "r");
    FILE* f1=fopen("hashuri.out", "w");
    fscanf(f, "%d", &n);

    for(int i=0;i<n;i++){
        int op, x;
        fscanf(f, "%d %d", &op, &x);
        switch(op){
        case 1:
            adauga(x);
            break;
        case 2:
            sterge(x);
            break;
        case 3:
            fprintf(f1, "%d\n", (exista(x))?1:0);
        }
    }
    return 0;
}