Pagini recente » Cod sursa (job #142477) | Cod sursa (job #1317697) | Cod sursa (job #1708300) | Cod sursa (job #2651350) | Cod sursa (job #2868798)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("secv5.in");
ofstream fout("secv5.out");
unsigned int a[1050000];
pair <int, int> nor[1050000];
int f[1050000];
int n, L, U;
long long Nrsec(int L)
{
long long secv = 0;
int i, j, cnt = 0;
j = 1;
for(i = 1;i <= n;i++)
f[i] = 0;
for(i = 1;i <= n;i++)
{
f[a[i]]++;
if(f[a[i]] == 1)
cnt++;
while(cnt > L)
{
if(f[a[j]] == 1)
cnt--;
f[a[j]]--;
j++;
}
secv += i - j + 1;
}
return secv;
}
int main()
{
int i;
long long sol;
fin >> n >> L >> U;
for(i = 1;i <= n;i++)
{
fin >> a[i];
nor[i].first = a[i];
nor[i].second = i;
}
sort(nor + 1, nor + n + 1);
int val = 0;
for(i = 1;i <= n;i++)
{
if(nor[i].first != nor[i - 1].first)
val++;
a[nor[i].second] = val;
}
sol = Nrsec(U) - Nrsec(L - 1);
fout << sol << "\n";
fout.close();
return 0;
}