Cod sursa(job #2755669)

Utilizator lahayonTester lahayon Data 27 mai 2021 22:28:34
Problema Secventa 5 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>
#include <iostream>
#include <unordered_map>
#include <vector>


using namespace std;

#define MAX_N 1 << 20

vector<unsigned int> values;

long long sequences(int limit){

    long long result = 0;
    vector<int> ap(MAX_N, 0);
    int left = 0, distincts = 0;

    for(int i = 0; i < values.size(); ++i){

        if(++ap[values[i]] == 1) 
            ++distincts;

        while(distincts > limit){ 
           if(--ap[values[left]] == 0)
                --distincts;
            ++left;
        }
         result += (i - left + 1);
    }
    return result;

}

int main()
{ 

    ifstream cin("secv5.in");
    ofstream cout("secv5.out");

    int N, L, U, distincts = 0;
    unsigned int x;
    cin >> N >> L >> U;
    
    unordered_map<unsigned int, int> hashtable;

    for(int i = 0; i < N; ++i){
        cin >> x;
        if(hashtable[x] == 0)
            hashtable[x] = ++distincts;
        values.push_back(distincts);
    }

    cout << sequences(U) - sequences(L - 1);

    cin.close();
    cout.close();

  return 0;
}