Cod sursa(job #2661280)

Utilizator Remus.RughinisRemus Rughinis Remus.Rughinis Data 21 octombrie 2020 18:24:03
Problema Hashuri Scor 100
Compilator c-64 Status done
Runda Temă vectori frecvență & hashing clasa a 9-a Marime 1 kb
#include <stdio.h>
#include <stdlib.h>
#define FUNCTIE 1000 ///Functia hash va fi %FUNCTIE

int h[FUNCTIE][100001]; ///Sunt sanse foarte mici sa fie mai mult de 100000 numere pe un rand
///Pe pozitia zero voi tine marime hashului pe acea valoare
void add(int x){
  int i=x%FUNCTIE;
  h[i][0]++;
  h[i][h[i][0]]=x;
}

int exista(int x){
  int j=1,i=x%FUNCTIE;
  for (j=1;j<=h[i][0];j++)
    if(h[i][j]==x)
      return j;
  return 0;
}

void sterge(int x){
  int j,i=x%FUNCTIE;
  j=exista(x);
  if(j>0){
    for(;j<h[i][0];j++)
      h[i][j]=h[i][j+1];
    h[i][0]--;
  }
}

int main(){
  int n,i,x,o;
  FILE *fin, *fout;
  fin=fopen("hashuri.in","r");
  fout=fopen("hashuri.out","w");
  fscanf(fin,"%d",&n);
  for(i=0;i<n;i++){
    fscanf(fin,"%d%d",&o,&x);
    if(o==1)
      add(x);
    else if(o==2)
      sterge(x);
    else{
      if(exista(x)>0)
        fprintf(fout,"1\n");
      else
        fprintf(fout,"0\n");
    }
  }
  fclose(fin);
  fclose(fout);
  return 0;
}