Pagini recente » Cod sursa (job #453446) | Autentificare | Cod sursa (job #1261664) | Cod sursa (job #2728014) | Cod sursa (job #1214516)
#include <fstream>
#include <vector>
using namespace std;
ifstream is("secv5.in");
ofstream os("secv5.out");
#define MOD 666013
#define ll long long
void Normalize();
ll Compute(ll);
void Debug();
vector <pair<ll,ll> > H[MOD];
ll N, L, U, x, a, b;
ll V[1024*1024*2];
ll Frv[1024*1024*2];
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;
}
}
ll Compute(ll X)
{
ll sol(0);
ll 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]]--;
if ( Frv[V[it]] == 0)
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] << " ";
}