#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 11;
int n, m;
int c[MAXN], dp[MAXN];
map < int, int > was[MAXN];
bool check(int s, int l){
for(int i = s; i < s + m; i++){
if(!was[i % m][c[l]]) return 0;
l++;
}
return 1;
}
int minimumInstructions(int N, int M, int K, vector < int > C, vector < int > A, vector < vector < int > > B) {
n = N, m = M;
for(int i = 0; i < n; i++) c[i] = C[i], dp[i] = MAXN;
for(int i = 0; i < M; i++)
for(int x : B[i])
was[i][x] = 1;
for(int x = 0; x < m; x++){
if(check(x, 0)){
for(int i = 0; i < m; i++) dp[i] = 1;
break;
}
}
for(int i = m; i < n; i++){
for(int x = 0; x < m; x++){
if(check(x, i - m + 1)){
dp[i] = min(dp[i], dp[i - m] + 1);
break;
}
}
}
if(dp[n - 1] == MAXN) return -1;
else return dp[n - 1];
}
# | 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... |