Cod sursa(job #1282847)

Utilizator OwlreeRobert Badea Owlree Data 4 decembrie 2014 20:01:54
Problema Secventa 5 Scor 90
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I Marime 0.73 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%d%d", &N, &L, &U);

  v.resize(N);

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

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

  fclose(in);
  fclose(out);

  return 0;
}