Cod sursa(job #1847851)

Utilizator PondorastiAlex Turcanu Pondorasti Data 15 ianuarie 2017 10:13:55
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <iostream>
#include <fstream>
using namespace std;
const int NMAX=1<<20;
int n,l,u,v[NMAX+5],f[NMAX+5];
long long Solve(int n);
void Wipe();
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);}
    Wipe();
    return ans;}
void Wipe() {
    for(int i=1;i<=n;i++)
        f[v[i]]=0;}