Submission #1269175

#TimeUsernameProblemLanguageResultExecution timeMemory
1269175jojeonghoonPainting Walls (APIO20_paint)C++20
0 / 100
0 ms328 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...