제출 #1214071

#제출 시각아이디문제언어결과실행 시간메모리
1214071dzuizz벽 칠하기 (APIO20_paint)C++20
28 / 100
1618 ms488600 KiB
// Subtask 4 #include "paint.h" #include <vector> #include <map> #include <cstring> #include <iostream> using namespace std; int n,m,k; 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; map<int,bool> mp[m]; for(int i=0;i<m;++i) for(auto&x:b[i]) mp[i][x]=1; int dp[n][m]; for(int i=n-1;i>=0;--i){ for(int j=0;j<m;++j){ dp[i][j]=mp[j][c[i]]; if(i<n-1&&dp[i][j]) dp[i][j]+=dp[i+1][(j+1)%m]; } } bool can[n]; memset(can,0,sizeof can); 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;i<n;++i) cerr<<can[i]<<" "; cerr<<'\n'; int ans=0,i=0,j=can[0]?m:0,nj; while(i<j){ cerr<<i<<" "<<j<<'\n'; for(nj=0;i<n&&i<j;++i) if(can[i]) nj=i+m; if(i<n&&can[i]) j=i+m; else j=nj; ++ans; } return i==n?ans:-1; }
#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...