#include "paint.h"
#include <bits/stdc++.h>
using namespace std;
const int nx=5e2+5, mx=2e2+5, kx=1e5+5;
int dp[nx][mx], s[nx], mn[nx];
vector<int> g[kx];
int minimumInstructions(int N, int M, int K, std::vector<int> C, std::vector<int> A, std::vector<std::vector<int>> B) {
for (int i=0; i<M; i++) for (auto x:B[i]) g[x].push_back(i);
for (int i=0; i<N; i++)
{
for (int j=0; j<M; j++) dp[i][j]=i+1;
for (auto idx:g[C[i]])
{
if (i==0) dp[i][idx]=i;
else dp[i][idx]=max(i-M+1, dp[i-1][(idx-1+M)%M]);
}
mn[i]=1e9;
for (int j=0; j<M; j++) mn[i]=min(mn[i], dp[i][j]);
//cout<<"here "<<i<<' '<<mn[i]<<'\n';
}
int cur=-1, lst=-2, ans=0;
while (cur!=N-1)
{
int f=0;
//cout<<"loop "<<cur<<' '<<lst<<'\n';
for (int i=cur; i>lst; i--)
{
if (mn[i+M]==i+1)
{
f=1;
lst=i;
ans++;
cur=i+M;
break;
}
}
if (!f) return -1;
}
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... |