Cod sursa(job #1990292)

Utilizator DjokValeriu Motroi Djok Data 11 iunie 2017 12:08:30
Problema Secventa 5 Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I Marime 0.7 kb
#include <bits/stdc++.h>
using namespace std;

const int N = 1234567;

int i, n, l, u, nr;
unsigned int a[N];

long long solve(int nr) {
  long long ans = 0;
  int cnt = 0, i, j = 1;
  unordered_map<unsigned int, int> freq;

  for(i = 1; i <= n; ++i) {
    ++freq[a[i]];
    if(freq[a[i]] == 1) ++cnt;

    while(cnt > nr) {
      --freq[a[j]]; ++j;
      if(!freq[a[j - 1]]) --cnt, freq.erase(a[j - 1]);
    }

    ans += i - j + 1;
  }

  return ans;
}

int main() {
  ifstream cin("secv5.in");
  ofstream cout("secv5.out");
  ios_base::sync_with_stdio(0);

  cin >> n >> l >> u;
  for(i = 1; i <= n; ++i) cin >> a[i];

  cout << solve(u) - solve(l - 1) << '\n';

  return 0;
}