Cod sursa(job #3297819)

Utilizator gabyyy____23Gabriela Madalina Pirvulescu gabyyy____23 Data 23 mai 2025 20:59:35
Problema Plantatie Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <iostream>
#include <vector>
#include <unordered_set>
using namespace std;

int main() {
    int n;
    cin >> n;
    vector<int> v(n);
    for (int& x : v) cin >> x;

    vector<int> freq(n + 2, 0); // A[i] ≤ N
    unordered_set<int> used;    // To track current distinct values

    int left = 0;
    long long result = 0;

    for (int right = 0; right < n; ++right) {
        freq[v[right]]++;
        used.insert(v[right]);

        while (freq[v[right]] > 1 && freq[1] > 1) {
            freq[v[left]]--;
            if (freq[v[left]] == 0) used.erase(v[left]);
            left++;
        }

        // If no value is used more than we can reduce
        // (we check for safety by making sure all values can be made distinct and ≥ 1)
        while ((int)used.size() < (right - left + 1)) {
            freq[v[left]]--;
            if (freq[v[left]] == 0) used.erase(v[left]);
            left++;
        }

        result += (right - left + 1);
    }

    cout << result << '\n';
    return 0;
}