제출 #1214074

#제출 시각아이디문제언어결과실행 시간메모리
1214074dzuizz벽 칠하기 (APIO20_paint)C++20
28 / 100
1600 ms158472 KiB
// Subtask 4 #include "paint.h" #include <set> #include <vector> #include <cstring> #include <iostream> using namespace std; constexpr int N=2e4,M=2e3,K=1e5; int n,m,k,ans; 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 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...