Cod sursa(job #2661880)

Utilizator Remus.RughinisRemus Rughinis Remus.Rughinis Data 22 octombrie 2020 20:31:17
Problema Secventa 5 Scor 0
Compilator c-64 Status done
Runda Temă vectori frecvență & hashing clasa a 9-a Marime 1.06 kb
#include <stdio.h>
#include <stdlib.h>
#define at20 1048576
#define FUNCTIE 1000///functia hash va fi %FUNCTIE

int v[at20],h[FUNCTIE][100001],p[FUNCTIE][100001];
///Pe 0 voi tine marime a hashului
int exista(int x){
  int i=x%FUNCTIE,j;
  for(j=1;j<=h[i][0];j++)
    if(h[i][j]==x)
      return j;
  return 0;
}

void add(int x,int j){
  int i=x%FUNCTIE,poz=exista(x);
  if(poz==0){
    h[i][0]++;
    h[i][h[i][0]]=x;
    p[i][h[i][0]]=j;
    v[j]=-1;
  } else
    v[j]=p[i][poz];
}

int main(){
  FILE *fin, *fout;
  int n,i,j,l,u,x,s;
  long long sum;
  fin=fopen("secv5.in","r");
  fscanf(fin,"%d%d%d",&n,&l,&u);
  for(i=0;i<n;i++){
    fscanf(fin,"%d",&x);
    add(x,i);
  }
  fclose(fin);

//  for(i=0;i<n;i++)
//    printf("%d ",v[i]);
//  printf("\n");

  sum=0;
  for(i=0;i<n;i++){
    s=0;
    j=i;
    while(j<n&&s<=u){
      if(v[j]==-1||i>v[j])
        s++;
      if(s>=l && s<=u)
        sum++;
      j++;
    }
  }
  fout=fopen("secv5.out","w");
  fprintf(fout,"%lld\n",sum);
  fclose(fout);
  return 0;
}