Cod sursa(job #2438449)

Utilizator TeddyDinutaDinuta Eduard Stefan TeddyDinuta Data 12 iulie 2019 15:41:36
Problema Secventa 5 Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <unordered_map>
#include <cstdio>
using namespace std;
ifstream in("secv5.in");
ofstream out("secv5.out");
int n,l,u;
unsigned int a[(1<<20)+1];
long long solve(unsigned int x)
{
   long long ans=0,dif=0;
   unordered_map<unsigned int,int> mp;
   int i=1,j=1;
   while(i<=n)
   {
       mp[a[i]]++;
       while(mp.size()>x)
       {
           mp[a[j]]--;
           if(mp[a[j]]==0)  mp.erase(a[j]);
           j++;
       }
       ans+=i-j+1;
       i++;
   }
   return ans;
}
int main()
{
    freopen("secv5.in","r",stdin);
    freopen("secv5.out","w",stdout);
    scanf("%d%d%d",&n,&l,&u);
    for(int i=1;i<=n;i++) scanf("%u",&a[i]);
    long long r1,r2;
    r1=solve(u);
    r2=solve(l-1);
    printf("%lld",r1-r2);
    return 0;

}