Submission #855059

#TimeUsernameProblemLanguageResultExecution timeMemory
855059NeroZein Martian DNA (BOI18_dna)C++17
100 / 100
27 ms4688 KiB
#include "bits/stdc++.h"
using namespace std;

#ifdef Nero
#include "Deb.h"
#else
#define deb(...)
#endif

int main(){
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int n, k, r;
  cin >> n >> k >> r;
  vector<int> a(n); 
  for (int i = 0; i < n; ++i) {
    cin >> a[i]; 
  }
  vector<int> c(k, -1); 
  for (int i = 0; i < r; ++i) {
    int b, q;
    cin >> b >> q;
    c[b] = q; 
  }
  int ok = k - r; 
  vector<int> cnt(k); 
  auto add = [&](int ind, int v) {
    ok -= cnt[a[ind]] >= c[a[ind]];
    cnt[a[ind]] += v;
    ok += cnt[a[ind]] >= c[a[ind]];
  };
  int ans = n + 1; 
  for (int pl = 0, pr = 0; pl < n; ++pl) {//[l, r)
    pr = max(pr, pl); 
    while (pr < n && ok < k) {
      add(pr, 1); 
      pr++; 
    }
    if (ok == k) {
      ans = min(ans, pr - pl); 
    }
    add(pl, -1); 
  }
  if (ans == n + 1) {
    cout << "impossible" << '\n';
  } else {
    cout << ans << '\n';
  }
  return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...