Cod sursa(job #667405)

Utilizator Smaug-Andrei C. Smaug- Data 23 ianuarie 2012 00:11:45
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>
#include <cstring>

#define MAXN ((1<<20)+10)
#define MOD 80011
#define LOGN 7

static unsigned H[MOD][LOGN];

void hash_add(unsigned x){
  int i, key;

  key=x%MOD; i=0;
  while(H[key][i])
    i++;

  H[key][i]=x;
  
}

int hash_find(unsigned x){
  int i, key;

  key=x%MOD; i=0;
  while(H[key][i] != x)
    i++;

  if(H[key][i] == x)
    return 1;
  else
    return 0;

}

int main(){

  freopen("secv5.in", "r", stdin);
  freopen("secv5.out", "w", stdout);

  int N, L, R, i, j, cnt, res;
  static unsigned A[MAXN];

  scanf("%d%d%d", &N, &L, &R);
  for(i=0; i<N; i++)
    scanf("%u", A+i);

  res=0;
  for(i=0; i<N; i++){
    cnt=1; hash_add(A[i]);
    for(j=i+1; j<N; j++){
      if(!hash_find(A[j])){
	cnt++;
	hash_add(A[j]);
      }
      
      if(L <= cnt && cnt <= R)
	res++;
      
    }
    memset(H, 0, sizeof(H));
  }

  printf("%d\n", res);

  return 0;

}