Cod sursa(job #1561710)

Utilizator bogdanboboc97Bogdan Boboc bogdanboboc97 Data 4 ianuarie 2016 14:20:41
Problema Secventa 5 Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>
#define int64 long long
using namespace std;
ifstream in("secv5.in");
ofstream out("secv5.out");
unsigned a[1111111],n,x,y,k;
vector<unsigned> v;
int64 solve(int64 t)
{
    vector<unsigned> v(k+1);
    int64 sol=0,last=1,cnt=0;
    for(unsigned i=1;i<=n;i++)
    {
        if(v[a[i]]==0)
            cnt++;
        v[a[i]]++;
        while(cnt>t)
        {
            v[a[last]]--;
            if(v[a[last]]==0)
                cnt--;
            last++;
        }
        sol+=(i-last+1);
    }
    return sol;
}
int main()
{
    in>>n>>x>>y;
    map<int64,unsigned> h;
    for(unsigned i=1;i<=n;i++)
    {
        int64 nr;
        in>>nr;
        if(h[nr]==0)
            h[nr]=++k;
        a[i]=h[nr];
    }
    out<<solve(y)-solve(x-1)<<'\n';
    return 0;
}