Cod sursa(job #1847875)

Utilizator PondorastiAlex Turcanu Pondorasti Data 15 ianuarie 2017 10:41:12
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
const int NMAX=1<<20;
unsigned int n,l,u,v[NMAX+5],f[NMAX+5];
long long Solve(int n);
int main() {
    ifstream cin("secv5.in");
    ofstream cout("secv5.out");
    cin>>n>>l>>u;
    for(int i=1;i<=n;i++)
        cin>>v[i];
    cout<<Solve(u)-Solve(l-1);
    return 0;
}
long long Solve(int l) {
    int ans=0,length=0,st=1;
    for(int dr=1;dr<=n;dr++) {
        if(f[v[dr]]==0)
           length++;
        f[v[dr]]++;
        while(length>l) {
            f[v[st]]--;
            if(f[v[st]]==0)
                length--;
            st++;}
        ans+=1LL*(dr-st+1);}
    memset(f,0,sizeof(f));
    return ans;}