Cod sursa(job #2051705)

Utilizator DawlauAndrei Blahovici Dawlau Data 29 octombrie 2017 14:10:44
Problema Secventa 5 Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<fstream>
#include<unordered_map>
using namespace std;
ifstream fin("secv5.in");
ofstream fout("secv5.out");
const int NMAX=(1<<20)+5;
unsigned int v[NMAX],n,u,l;
void read_data(){
    unsigned int i;
    fin>>n>>l>>u;
    for(i=1;i<=n;++i)
        fin>>v[i];
}
unsigned long long cnt(int lim){
    unordered_map<unsigned int,unsigned int>m;
    unsigned int i,inf=1,different_els=0;
    unsigned long long ans=0;
    for(i=1;i<=n;++i){
        if(!m[v[i]])
            ++different_els;
        ++m[v[i]];
        while(different_els>lim){
            --m[v[inf]];
            if(!m[v[inf]]){
                --different_els;
                m.erase(v[inf]);
            }
            ++inf;
        }
        ans+=(i-inf);
    }
    return ans;
}
int main(){
    read_data();
    fout<<cnt(u)-cnt(l-1);
}