Pagini recente » Cod sursa (job #2881438) | Cod sursa (job #762636) | Cod sursa (job #2191652) | Cod sursa (job #2977634) | Cod sursa (job #1214509)
#include <fstream>
#include <vector>
#include <cstring>
using namespace std;
ifstream is("secv5.in");
ofstream os("secv5.out");
#define MOD 666013
void Normalize();
long long Compute(int);
void Debug();
vector <pair<int,int> > H[666003];
int N, L, U, x, a, b;
int V[1024*1024+5];
int Frv[1024*1024+5];
int main()
{
Normalize();
os << Compute(U) - Compute(L-1);
is.close();
os.close();
}
void Normalize()
{
is >> N >> L >> U;
for ( int i = 1; i <= N; ++i )
{
is >> x; a = 0;
for ( int j = 0; j < H[x%MOD].size(); ++j )
if ( H[x%MOD][j].first == x )
a = H[x%MOD][j].second;;
if ( a == 0 )
{
b++;
a = b;
H[x%MOD].push_back(make_pair(x,a));
}
V[i] = a;
}
}
long long Compute(int X)
{
long long sol(0);
int bg,nrd(0),it(0);
for ( int i = 1; i <= N; ++i )
{
while ( nrd <= X && it <= N )
{
++it;
Frv[V[it]]++;
if ( Frv[V[it]] == 1 )
nrd++;
}
Frv[V[it]]--;
nrd--;
Frv[V[i]]--;
if ( Frv[V[i]] == 0 )
nrd--;
it--;
sol += (it-i+1);
}
return sol;
}
void Debug()
{
for ( int i = 1; i <= N; ++i )
os << V[i] << " ";
}