Cod sursa(job #2884374)

Utilizator VartonVarts Var Varton Data 3 aprilie 2022 01:09:56
Problema Secventa 5 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.55 kb
#include <iostream>
#include <bits/stdc++.h>
#include <fstream>
#include <map>

using namespace std;
ifstream in("secv5.in");
ofstream out("secv5.out");
const int mod = 666013;
map<int, vector<int>> m1;
map<int, vector<int>> m2;
vector<int> v1;
int main() {
    int l, u, n;
    int x;
    in >> n ;
    in>> l >> u;
    for (int i = 0; i < n; i++) {
        in>>x;
        v1.push_back(x);
    }
    int s=0, cntU=0, cntL=0;
    for (int i=0; i<n; i++) {
        int ok = 0 ;
        for(auto element : m1){
            if(element.first == v1[i]%mod)
                ok=1;
        }
        if(ok==0)
            m1.insert(pair<int, vector<int>>(v1[i]%mod,{v1[i]}));
        else
            m1[v1[i]%mod].push_back(v1[i]);
        if(m1.size()>u) {
            int auxs = m1[v1[s]%mod].size();
            m1.erase(v1[s]%mod);
            s += auxs;
        }
        cntU += (i-s+1);
    }
    s = 0;
    for (int i=0; i<n; i++) {
        int ok = 0 ;
        for(auto element : m2){
            if(element.first == v1[i]%mod)
                ok=1;
        }
        if(ok==0)
            m2.insert(pair<int,vector<int>>(v1[i]%mod,{v1[i]}));
        else
            m2[v1[i]%mod].push_back(v1[i]);
        if(m2.size()>=l) {
            int auxs = m2[v1[s]%mod].size();
            m2.erase(v1[s]%mod);
            s += auxs;
        }
//        while(m2.size()>=l){
//            m2.erase(v1[s++]%mod);
//        }
        cntL += (i-s+1);
    }
//    cout<<cntU<<" "<<cntL<<endl;
    out<< cntU - cntL;
    return 0;
}