Pagini recente » Cod sursa (job #542325) | Cod sursa (job #1356171) | Cod sursa (job #2752373) | Cod sursa (job #769224) | Cod sursa (job #2469276)
#include <fstream>
#include <unordered_map>
using namespace std;
ifstream cin("secv5.in");
ofstream cout("secv5.out");
unsigned int v[1050000];
int n,L,U;
void read()
{
int i;
cin>>n>>L>>U;
for(i=1; i<=n; i++)
cin>>v[i];
}
unsigned long long solve(int k)
{
int i,j,dif;
unsigned long long sol=0;
unordered_map < unsigned int, int > M;
j=0;
dif=0;
for(i=1; i<=n; i++)
{
if(M[v[i]]==0)
dif++;
M[v[i]]++;
while(dif>k)
{
j++;
M[v[j]]--;
if(M[v[j]]==0)
dif--;
}
sol+=(i-j);
}
return sol;
}
int main()
{
read();
cout<<(solve(U)-solve(L-1));
return 0;
}
/* j
v[i]: 13 13 7 9 9
i
coada.size() = 3
coada.dif() = 2
in sol se adauga coada.size() la fiecare pas
sol=1+2+3+2+3
*/