#include "paint.h"
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cassert>
#include <vector>
#include <map>
#include <set>
using namespace std;
const int LM=100100;
int N,M,K;
vector<int> C, A;
vector<vector<int>>B, E;
int D[LM], w[LM], ch[LM];
vector<int> pr;
void F(int x, int color){
int d=0;
for(int i:E[color]){
int t=(i-x+M)%M;
ch[t]=1;
d=max(++w[t], d);
}
D[x]=d;
for(int i:pr) if(!ch[i]) w[i]=0;
pr.clear();
for(int i:E[color]){
ch[i]=0;
pr.push_back(i);
}
}
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_, A=A_, B=B_;
E.assign(K, {});
for(int i=0; i<M; i++){
for(int j=0; j<A[i]; j++){
E[B[i][j]].push_back(i);
}
}
for(int i=0; i<N; i++){
F(i, C[i]);
if(D[i]==0) return -1;
}
int ret=0, k=0;
for(int i=0; i<N; i++){
k++;
if(D[i] >= D[i+1]){
if(D[i]<M) return -1;
ret += k/M;
}
}
return ret;
}
# | 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... |