Cod sursa(job #869831)

Utilizator TheShadowsAlexandru Cristian TheShadows Data 2 februarie 2013 13:37:27
Problema Hashuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include<vector>
#include<cstdio>
using namespace std;
const int MOD = 666013;
vector <int> table[MOD];
void adauga(int val){
    int x=val%MOD, l=table[x].size();
    if(l==0)
        {table[x].push_back(val); return; }
    for(int i=0; i<=l; i++)
        if(table[x][i]>val){
            table[x].insert(table[x].begin(), val, i);
            i=l;
        }
}
void elim(int val){
    int x=val%MOD, l=table[x].size();
    if(l==0) return;
    for(int i=0; i<=l; i++)
        if(table[x][i]==val){
            table[x].erase(table[x].begin() + i);
            i=l;
        }
}
bool exists(int val){
    int x=val%MOD, l=table[x].size();
    if(l==0) return false;
    for(int i=0; i<=l; i++)
        if(table[x][i]==val)
            return true;
        else if(table[x][i]>val)
            return false;
}
int main(){
    FILE *in=fopen("hashuri.in","r"), *out=fopen("hashuri.out","w");
    int q, type, val;
    fscanf(in, "%d\n", &q);
    for(int i=1; i<=q; i++){
        fscanf(in, "%d %d\n", &type, &val);
        if(type==1)
            adauga(val);
        else if(type==2)
            elim(val);
        else if(type==3)
            fprintf(out, "%d\n", exists(val));
    }
    return 0;
}