#include "paint.h"
#include "bits/stdc++.h"
using namespace std;
int minimumInstructions(int n, int m, int k, vector<int> c, vector<int> ln, vector<vector<int>> g) {
vector likes(m, vector(k, false));
for (int i = 0; i < m; i++) {
for (int x: g[i]) likes[i][x] = true;
}
vector<int> cnt(n);
for (int j = 0; j < m; j++) {
vector<int> pref(n);
for (int i = 0; i < n; i++) {
if (!likes[j][c[i]]) continue;
int l = max(0, i - m + 1);
int r = min(i, n - m);
// cout << i << ' ' << j << ' ' << l << ' ' << r << endl;
pref[l]++;
if (r + 1 < n) pref[r + 1]--;
}
for (int i = 1; i < n; i++) pref[i] += pref[i - 1];
for (int i = 0; i < n; i++) {
if (pref[i]) cnt[i]++;
}
}
set<int, greater<>> pos; pos.insert(-m);
for (int i = 0; i <= n - m; i++) {
if (cnt[i] == m) pos.insert(i);
}
int now = -m, ans = 0;
while (now < n - m) {
auto it = pos.lower_bound(now + m);
if (*it == now) return -1;
now = *it;
ans++;
}
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |