Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int main() {
- int n, k, r;
- cin >> n >> k >> r;
- vector<int> a(n);
- for (auto &i : a) {
- cin >> i;
- }
- vector<int> mem(k);
- for (int i = 0; i < r; i++) {
- int b, q;
- cin >> b >> q;
- mem[b] = q;
- }
- int i = 0, d = 0;
- vector<int> cnt(k);
- while (i < n) {
- cnt[a[i]]++;
- if (mem[a[i]] && cnt[a[i]] == mem[a[i]]) d++;
- if (d == r) break;
- i++;
- }
- if (i == n) {
- cout << "impossible" << '\n';
- return 0;
- }
- int ans = i + 1, j = 0;
- while (i < n) {
- while (!(mem[a[j]] && cnt[a[j]] == mem[a[j]])) {
- cnt[a[j]]--;
- j++;
- }
- ans = min(ans, i - j + 1);
- i++;
- cnt[a[i]]++;
- }
- cout << ans << '\n';
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement