Pagini recente » Rating Margineanu Cristian (Mark) | Profil raulkele | Urmasii lui Moisil 2016, Clasa a 9-a | Cowfood | Cod sursa (job #10664)
Cod sursa(job #10664)
using namespace std;
#include <cstdio>
#include <map>
#include <iostream>
int N, L, U, A[1<<20+2];
map<int,int> mp;
void resort()
{
}
long long doit( int LEN )
{
long long ret = 0;
int r = 0, dist = 0;
bool can;
mp.clear();
// cout << " here " << endl;
for( int i = 1; i <= N; i++ )
{
while( r + 1 <= N )
{
can = mp[ A[r+1] ];
if( !(can || dist + 1 <= LEN ) )
break;
if( !can )
dist++;
mp[ A[r+1] ]++;
++r;
}
mp[ A[i] ]--;
if( !mp[A[i]] )
dist--;
ret += (long long)( r - i + 1 );
// cout << i << " : : " << r << endl;
// fflush( stdout );
}
return ret;
}
int main()
{
freopen("secv5.in", "r", stdin);
freopen("secv5.out", "w", stdout);
scanf("%d %d %d", &N, &L, &U);
for( int i = 1; i <= N; i++ )
scanf("%d", A + i );
cout << doit( U ) - doit( L - 1 ) << endl;
return 0;
}