Cod sursa(job #1282841)

Utilizator OwlreeRobert Badea Owlree Data 4 decembrie 2014 19:51:05
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I Marime 0.76 kb
#include <bits/stdc++.h>

using namespace std;

vector <long long> v;

long long ans(int x) {

  int n = (int)v.size();
  unordered_map<long long, int> s;

  long long res = 0;

  int j = 0;
  for (int i = 0; i < n; ++i) {
    s[v[i]]++;
    while ((int)s.size() > x) {
      if (s[v[j]] == 1) {
        s.erase(v[j]);
      } else {
        s[v[j]]--;
      }
      j++;
    }
    res += (i - j + 1);
  }

  return res;

}

int main() {

  FILE* in = fopen("secv5.in", "r");
  FILE* out = fopen("secv5.out", "w");

  int N, L, U;
  fscanf(in, "%d", &N);
  fscanf(in, "%d", &L);
  fscanf(in, "%d", &U);

  v.resize(N);

  for (int i = 0; i < N; ++i) {
    fscanf(in, "%ld", &v[i]);
  }

  fprintf(out, "%ld\n", ans(U) - ans(L - 1));

  fclose(in);
  fclose(out);

  return 0;
}