#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);
int y = 0, old = -m, ans = 0;
while (true) {
for (int x = 0; x < m; x++) {
bool ok = true;
for (int i = 0; i < m and ok; i++) {
ok &= likes[(x + i) % m][c[y + i]];
}
if (ok) {
cnt[y] = m;
break;
}
}
if (cnt[y]) {
ans++;
if (y == n - m) break;
old = y;
y = min(n - m, y + m);
} else {
if (y == n - m) return -1;
y--;
if (y == old or y < 0) return -1;
}
}
// for (int y = 0; y <= n - m; y++) {
// for (int x = 0; x < m; x++) {
// bool ok = true;
// for (int i = 0; i < m and ok; i++) {
// ok &= likes[(x + i) % m][c[y + i]];
// }
// if (ok) {
// cnt[y] = m;
// break;
// }
// }
// }
// set<int, greater<>> st; st.insert(-m);
// for (int i = 0; i <= n - m; i++) {
// if (cnt[i] == m) st.insert(i);
// }
// int now = -m, ans = 0;
// while (now < n - m) {
// auto it = st.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... |