Pagini recente » Cod sursa (job #348622) | Cod sursa (job #1010739) | Cod sursa (job #1643482) | Cod sursa (job #1588774) | Cod sursa (job #1147410)
#include<fstream>
#include<vector>
using namespace std;
ifstream fin( "secv5.in" );
ofstream fout( "secv5.out" );
const int mod = 666013;
const int nmax = 1<<20;
int v[ nmax + 1 ];
vector <int> h[ mod ];
int main()
{
int n, a, b, sol, st, dr, key, nrdist;
bool ok;
fin>>n>>a>>b;
sol = st = dr = 0;
for( int i = 0; i < n; ++ i ) {
fin>>v[i];
ok = 1;
key = v[i] % mod;
for( int j = 0; j < (int)h[ key ].size(); ++ j ) {
if ( h[key][j] != -1 && v[ h[key][j] ] == v[ i ] ) {
ok = 0;
}
}
if ( ok == 1 ) {
++ nrdist;
if ( nrdist > b ) {
key = v[ st ];
while ( key == v[ st ] ) {
++ st;
}
-- nrdist;
}
}
if ( nrdist >= a ) {
if ( ok == 1 ) {
key = v[ dr ];
while ( v[ dr ] == key ) {
++ dr;
}
if ( nrdist == a ) {
-- dr;
} else {
key = v[ dr ];
while ( v[ dr ] == key ) {
++ dr;
}
-- dr;
}
}
sol += dr - st + 1;
}
h[ v[ i ] % mod ].push_back( i );
}
fout<<sol<<'\n';
fin.close();
fout.close();
return 0;
}