Cod sursa(job #629337)

Utilizator blue_phoenixPosea Elena blue_phoenix Data 3 noiembrie 2011 10:25:43
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#include <stdio.h>
#include <vector>

using namespace std;
#define PRIM 666013

vector<int> v[PRIM+1];

bool e_in_hash(int p){
    int i,mod=p%PRIM;
    int n=v[mod].size();
    for(i=0;i<n;i++){
         if(v[mod][i]==p)return 1;
    }
    return 0;
}

void sterge(int p){    
    int i,mod=p%PRIM;
    int n=v[mod].size();
    for(i=0;i<n;i++){
         if(v[mod][i]==p){
           v[mod][i]=v[mod][n-1];
           v[mod].pop_back();
           return;
        }
    }
    return;

}

int main(){
   int n;
   int i;
   FILE *fin=fopen("hashuri.in","r");
   int op,par;
   FILE *fout=fopen("hashuri.out","w");
   fscanf(fin,"%d",&n);
   for(i=0;i<n;i++){
       fscanf(fin,"%d%d",&op,&par);
       switch(op){
         case 1: //adaug x-ul, daca nu e deja
                if(!e_in_hash(par)){
                   v[par%PRIM].push_back(par);
                }
            break;
         case 2:
               //sterg elem x, daca exista
               sterge(par);    
            break;
         case 3://caut x
              if(e_in_hash(par)){
                  fprintf(fout,"1\n");
              }else fprintf(fout,"0\n");
       }
   }
   fclose(fout);
return 0;
}