Cod sursa(job #3245445)

Utilizator n6v26rDedu Razvan Matei n6v26r Data 29 septembrie 2024 01:11:19
Problema Secventa 5 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>
#include <unordered_map>

#define MAXN (1<<20)

std::unordered_map<unsigned int, int> ap;

int n;

int min;
int max;

unsigned int v[MAXN];
int sp[MAXN];

long long solve(int limit){
  int d=0, s=0;
  long long total = 0;
  while(s<n){
    while(d<n && sp[d]-sp[s]+1<=limit){
      /*printf("%d: %d %d\n", limit, s, d);*/
      d++;
    }
    total += (d-s);
    s++;
  }
  /*printf("=>%d\n", total);*/
  return total;
}

int main(){
  FILE *fin, *fout;
  fin = fopen("secv5.in", "r");
  fscanf(fin, "%u%u%u", &n, &min, &max);
  for(int i=0; i<n; i++){
    fscanf(fin, "%u\n", &v[i]);
    sp[i] = (i>0?sp[i-1]:0)+(ap.count(v[i])==0);
    ap[v[i]]++;
  }
  fclose(fin);
  
  fout = fopen("secv5.out", "w");
  fprintf(fout, "%lld\n", solve(max)-solve(min-1)); 
  fclose(fout);
  return 0;
}