Cod sursa(job #2047770)

Utilizator LucaSeriSeritan Luca LucaSeri Data 25 octombrie 2017 11:28:50
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <bits/stdc++.h>
using namespace std;

int N;

vector<unsigned int> v;

ifstream f("secv5.in");
ofstream g("secv5.out");

long long count(int lim){
    map <unsigned int, int> fr;
    int cnt = 0;
    int st = 1;
    long long secv = 0LL;
    for(int i = 1; i <= N; ++i){
        fr[v[i]] ++;
        if(fr[v[i]] == 1) ++ cnt;
        while(cnt > lim){
            fr[v[st]] --;
            if(fr[v[st]] == 0) {fr.erase(fr.find(v[st])); cnt--;}
            ++st;
        }
        secv += 1LL*(i-st+1LL);
    }
    return secv;
}
int main(){
    int l, r;
    f >> N;
    f >> l >> r;
    for(int i = 1; i <= N; ++i) {int a; f >> a; v.push_back(a);};
    g << count(r) - count(l-1);
    return 0;
}