Pagini recente » Cod sursa (job #1253409) | Cod sursa (job #223686) | Cod sursa (job #1907920) | Cod sursa (job #2419924) | Cod sursa (job #3121166)
#include <fstream>
#include <unordered_map>
using namespace std;
const int NMAX = (1 << 20) + 1;
int N;
unsigned v[NMAX];
ifstream fin("secv5.in");
ofstream fout("secv5.out");
long long calcul(int dif)
{
unordered_map <unsigned, int> M;
long long nrSec = 0;
int nrDif = 0, p = 1;
for(int i = 1; i <= N; ++i)
{
if(++M[v[i]] == 1)
++nrDif;
while(nrDif > dif && p <= i)
{
if(--M[v[p]] == 0)
--nrDif;
++p;
}
nrSec += i - p + 1;
}
return nrSec;
}
int main()
{
int L, U;
fin >> N >> L >> U;
for(int i = 1; i <= N; ++i)
fin >> v[i];
fout << calcul(U) - calcul(L - 1);
fin.close();
fout.close();
return 0;
}