Pagini recente » Cod sursa (job #1239221) | Cod sursa (job #1608015) | Cod sursa (job #2340854) | Cod sursa (job #1143937) | Cod sursa (job #2689412)
#include <fstream>
#include <map>
using namespace std;
long long n, v[ 1 << 20 + 1 ];
map< long long, long long > a;
long long caca( long long limita ){
long long rez = 0;
long long i = 0, cate = 0, st = 0;
for( ; i < n; i++ ){
if( !a[ v[ i ] ] )
while( st <= i && cate == limita ){
--a[ v[ st ] ];
if( a[ v[ st ] ] == 0 )
--cate;
++st;
}
if( !a[ v[ i ] ] )
++cate;
++a[ v[ i ] ];
rez += i - st + 1;
}
a.clear();
return rez;
}
int main()
{
long long st, dr;
ifstream cin( "secv5.in" );
cin >> n >> st >> dr;
for( long long i = 0; i < n; i++ )
cin >> v[ i ];
cin.close();
ofstream cout( "secv5.out" );
cout << caca( dr ) - caca( st - 1 ) << '\n';
return 0;
}