Cod sursa(job #2524696)

Utilizator lucametehauDart Monkey lucametehau Data 16 ianuarie 2020 08:29:47
Problema Secventa 5 Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream>
#include <map>

using namespace std;

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

int n, l, u;
long long ans;

unsigned v[1048580];
map <unsigned, int> st, dr;

int main() {
  cin >> n >> l >> u;
  for(int i = 1; i <= n; i++)
    cin >> v[i];
  int j1 = 1, j2 = 1;
  for(int i = 1; i <= n; i++) {
    st[v[i]]++; dr[v[i]]++;
    while(st.size() >= l) {
      st[v[j1]]--;
      if(!st[v[j1]])
        st.erase(v[j1]);
      j1++;
    }
    while(dr.size() > u) {
      dr[v[j2]]--;
      if(!dr[v[j2]])
        dr.erase(v[j2]);
      j2++;
    }
    ans += j1 - j2;
  }
  cout << ans;
  return 0;
}