#include "paint.h"
#include <bits/stdc++.h>
using namespace std;
int n, m, k;
vector<int> c;
vector<set<int>> cov;
const int INF = 1e9;
vector<int> likedBy;
bool check(int idx) {
int start = likedBy[c[idx]];
if (start == -1) return false;
bool flag = true;
for (int j = 0; j < m; j++) {
int i = idx + j;
int curr = (start + j) % m;
if (cov[curr].find(c[i]) != cov[curr].end()) continue;
else {
flag = false;
break;
}
}
if (flag) return true;
return false;
}
int minimumInstructions(int N, int M, int K, vector<int> C, vector<int> A, vector<vector<int>> B) {
n = N;
m = M;
k = K;
c = C;
cov.resize(m);
likedBy.assign(k, -1);
for (int i = 1; i < m; i++) {
for (int j = 0; j < A[i]; j++) {
likedBy[B[i][0]] = i;
}
}
for (int i = 0; i < n; i++) {
if (likedBy[c[i]] == -1) return -1;
c[i] = likedBy[c[i]];
}
int cnt = 1;
int ans = 0;
for (int i = 1; i < n; i++) {
if (c[i-1] + 1 != c[i] || (c[i-1] == m-1 && c[i] != 0)) {
if (cnt < m) return -1;
ans += cnt / m + ((cnt % m) > 0);
cnt = 1;
}
else cnt++;
}
if (cnt < m) return -1;
ans += cnt / m + ((cnt % m) > 0);
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... |