Cod sursa(job #2479112)

Utilizator rebecca0312Andrei Rebecca rebecca0312 Data 23 octombrie 2019 11:34:15
Problema Secventa 5 Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<cstdio>
#include<unordered_map>
using namespace std;

const int nmax=(1<<20)+2;

int n;
unsigned int v[nmax];

long long nr_secv(unsigned int lg){
    long long nrsol=0;
    unordered_map<unsigned int,int>m;
    int i=1;
    for(int j=1;j<=n;j++){
        m[v[j]]++;
        while(m.size()>lg){
            m[v[i]]--;
            if(m[v[i]]==0)
                m.erase(v[i]);
            i++;
        }
        nrsol+=(j-i+1);
    }
    return nrsol;
}

int main(){
    freopen("secv5.in","r",stdin);
    freopen("secv5.out","w",stdout);
    int l,u;
    scanf("%d%d%d", &n, &l, &u);
    for(int i=1;i<=n;i++)
        scanf("%d", &v[i]);
    long long L=nr_secv(l-1),U=nr_secv(u);
    printf("%d\n", U-L);
    return 0;
}