Pagini recente » Cod sursa (job #654779) | Cod sursa (job #1307594) | Cod sursa (job #2040230) | Cod sursa (job #1682006) | Cod sursa (job #1569474)
#include <fstream>
#include <map>
using namespace std;
ifstream fin("secv5.in");
ofstream fout("secv5.out");
int N, L, U;
unsigned int V[1100000];
map<unsigned int, int> H;
long long max_secv(int M)
{
H.clear();
long long sol = 0;
int lg = 0, dist = 0, pos = 1;
for (int i = 1; i <= N; ++i)
{
if (H[V[i]])
{
++H[V[i]];
++lg;
sol += 1LL * lg;
}
else
{
++H[V[i]];
++dist;
++lg;
if (dist > M)
{
while (dist > M)
{
--H[V[pos]];
if (!H[V[pos]])
--dist;
--lg;
++pos;
}
}
sol += 1LL * lg;
}
}
return sol;
}
int main()
{
fin >> N >> L >> U;
for (int i = 1; i <= N; ++i)
fin >> V[i];
fout << max_secv(U) - max_secv(L - 1) << '\n';
return 0;
}