// Subtask 4
#include "paint.h"
#include <unordered_set>
#include <vector>
#include <cstring>
#include <iostream>
using namespace std;
constexpr int N=2e4,M=2e3,K=1e5;
int n,m,k,ans;
unordered_set<int> mp[M];
int dp[N][M];
bool can[N];
int minimumInstructions(int _n,int _m,int _k,vector<int>c,std::vector<int>a,std::vector<std::vector<int>>b) {
n=_n,m=_m,k=_k;
for(int i=0;i<m;++i) for(int j=0;j<a[i];++j)
mp[i].insert(b[i][j]);
for(int i=n-1;i>=0;--i){
for(int j=0;j<m;++j){
dp[i][j]=mp[j].count(c[i]);
if(i<n-1&&dp[i][j]) dp[i][j]+=dp[i+1][(j+1)%m];
}
}
for(int i=0;i<n;++i) for(int j=0;j<m;++j)
can[i]=can[i]||(dp[i][j]>=m);
for(int i=0,p=-1,q=-1;i<n;++i){
q=(can[i]?i+m-1:q);
if(i>p) p=q,++ans;
if(i>p) 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... |