Pagini recente » Cod sursa (job #196976) | Cod sursa (job #1201114) | Cod sursa (job #1830459) | Cod sursa (job #897917) | Cod sursa (job #1737020)
#include <bits/stdc++.h>
using namespace std;
ifstream f("secv5.in");
ofstream g("secv5.out");
const int NMAX = 1048580;
long long a[NMAX], tmp[NMAX];
int viz[NMAX];
inline long long Solve(int x, int N) {
for(int i = 1; i <= NMAX; i++) {
viz[i] = 0;
}
int distincte = 0, j = 1;
long long secv = 0;
for(int i = 1; i <= N; i++){
viz[a[i]]++;
if(viz[a[i]] == 1) {
distincte++;
}
if(distincte > x)
{
while(distincte > x && j <= i) {
viz[a[j]]--;
if(viz[a[j]] == 0) {
distincte--;
}
j++;
}
}
secv += (i - j + 1);
}
return secv;
}
int main()
{
int n, L , U;
f>> n >> L >> U;
for(int i = 1; i <= n; i++) {
f>> a[i];
tmp[i] = a[i];
}
int dist = 1;
sort(tmp+1,tmp+n+1);
for(int i = 1; i <= n; i++) {
if(tmp[i] != tmp[dist-1]) {
tmp[dist++] = tmp[i];
}
}
for(int i = 1; i <= n; i++) {
a[i] = lower_bound(tmp+1,tmp+n+1,a[i]) - tmp;
}
g<< Solve(U,n) - Solve(L-1,n)<<"\n";
return 0;
}