Cod sursa(job #1954973)

Utilizator Andrei2000Andrei Mihailescu Andrei2000 Data 5 aprilie 2017 19:15:42
Problema Secventa 5 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <bits/stdc++.h>
#define Nmax (1<<20+2)
using namespace std;
ifstream fin ("secv5.in");
ofstream fout ("secv5.out");
unsigned int n,l,u,v[Nmax];

unsigned long long doit(unsigned int a){
    unordered_map<unsigned int, unsigned int> hash1;
    unsigned int first=0;
    long long answer=0;
    for(unsigned int i=0;i<n;++i){
        hash1[v[i]]++;
        while(hash1.size()>a){
            hash1[v[first]]--;
            if(!hash1[v[first]])hash1.erase(v[first]);
            first++;
        }
        answer+=1LL*(i-first+1);
    }
    return answer;
}

int main()
{
    fin>>n>>l>>u;
    for(int i=0;i<n;++i)
        fin>>v[i];
    fout<<doit(u)-doit(l-1)<<'\n';
    return 0;
}