Cod sursa(job #3333523)

Utilizator Mateixx1Trandafir Matei Mateixx1 Data 13 ianuarie 2026 20:33:14
Problema Secventa 5 Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
const int NMAX=(1<<20)+1;
ifstream f("secv5.in");
ofstream g("secv5.out");
int n,w[NMAX],ap[NMAX],u,l;
struct elem {
    unsigned int val;
    int poz;
};
elem v[NMAX];

bool comp(const elem& x,const elem& y) {
    if(x.val==y.val) {
        return x.poz<y.poz;
    }
    return x.val<y.val;
}

void normal() {
    sort(v+1,v+n+1,comp);
    int x=1;
    w[v[1].poz]=1;
    for(int i=2; i<=n; i++) {
        if(v[i].val!=v[i-1].val) {
            ++x;
        }
        w[v[i].poz]=x;
    }
}

long long ra(int x) {
    long long sec=0;
    int cate=0,st=1;
    for(int i=1; i<=n; i++) {
        ap[i]=0;
    }
    for(int i=1; i<=n; i++) {
        if(++ap[w[i]]==1) {
            ++sec;
        }
        while(sec>x&&st<=i) {
            if(--ap[w[st]]==0) {
                --sec;
            }
            ++st;
        }
        cate+=i-st+1;
    }
    return cate;
}

int main() {
    f>>n>>l>>u;
    for(int i=1; i<=n; i++) {
        f>>v[i].val;
        v[i].poz=i;
    }
    normal();
    g<<ra(u)-ra(l-1);
    f.close();
    g.close();
    return 0;
}