Pagini recente » Cod sursa (job #1295774) | Cod sursa (job #1745036) | Clasament oni_10_4 | Cod sursa (job #907647) | Cod sursa (job #1761150)
#include <stdio.h>
#define MOD 666013 //:D
using namespace std;
unsigned int h[1048577], next[1048577], liste[MOD], f[1048577], v[1048577], n;
inline int search(int x){
int j;
for(j=liste[x%MOD];j!=0 && h[j]!=x;j=next[j]);
return j;
}
inline long long query(int x){
int i, j=0, dis=0, poz;
long long rez=0;
for(i=0;i<n;i++){
poz=search(v[i]);
f[poz]++;
if(f[poz]==1)
dis++;
while(dis>x){
poz=search(v[j]);
f[poz]--;
j++;
if(f[poz]==0)
dis--;
}
rez+=(i-j+1);
}
while(j<n){
f[search(v[j])]--;
j++;
}
return rez;
}
int main()
{
int a, i, j, l, u;
unsigned int x;
FILE *fi=fopen("secv5.in", "r"), *fo=fopen("secv5.out", "w");
fscanf(fi, "%u%u%u", &n, &l, &u);
a=1;
for(i=0;i<n;i++){
fscanf(fi, "%u", &x);
v[i]=x;
j=search(x);
if(h[j]!=x){
h[a]=x;
next[a]=liste[x%MOD];
liste[x%MOD]=a;
a++;
}
}
fprintf(fo, "%lld", 1LL*query(u)-1LL*query(l-1));
fclose(fi);
fclose(fo);
return 0;
}