Pagini recente » Cod sursa (job #2850979) | Cod sursa (job #305725) | Cod sursa (job #937121) | Cod sursa (job #2975931) | Cod sursa (job #1566199)
#include <iostream>
#include <fstream>
#include <unordered_map>
#include <cmath>
#include <cstdio>
#include <cstdlib>
using namespace std;
ofstream out("secv5.out");
int v[(1<<20)+1],n;
unsigned long long distsec(int nr)
{
unordered_map<unsigned ,int> h;
unsigned long long sol = 0 ,
to_remove = 1;
for(int i= 1 ; i <= n ; i++)
{
h[v[i]]++;
while(h.size()> nr)
{
h[v[to_remove]]--;
if(h[v[to_remove]]==0)
h.erase(v[to_remove]);
to_remove++;
}
sol += i-to_remove +1; //updatam numarul de subsiruri
}
return sol;
}
int main()
{
FILE *f = fopen("secv5.in","r");
int u,l;
fscanf(f,"%i%i%i",&n,&u,&l);
for(int i = 1 ; i <= n ; i++)
fscanf(f,"%i",&v[i]);
out <<distsec(l)- distsec(u-1);
return 0;
}