제출 #303250

#제출 시각아이디문제언어결과실행 시간메모리
303250nafis_shifat벽 칠하기 (APIO20_paint)C++14
100 / 100
798 ms15320 KiB
#include "paint.h" #include<bits/stdc++.h> #define pii pair<int,int> using namespace std; const int inf=1e8; int minimumInstructions(int N, int M, int K,vector<int> C, vector<int> A,vector<vector<int>> B) { vector<int> cn[K]; for(int i=0;i<M;i++) { for(auto j:B[i]) cn[j].push_back(i); } bool isen[N]; memset(isen,false,sizeof(isen)); int dp[M]={}; int vis[M]={}; for(int i: cn[C[0]]) { dp[i]=1; vis[i]=1; if(M==1) isen[i]=1; } for(int j=1;j<N;j++) { vector<pii> cur; for(int i : cn[C[j]]) { int y=(i-1+M)%M; int t; if(vis[y]==j) { t=dp[y]+1; } else { t=1; } cur.push_back({i,t}); if(t>=M) { isen[j]=true; } } for(pii x: cur) { dp[x.first]=x.second; vis[x.first]=j+1; } } int dp2[N]; for(int i=0;i<N;i++)dp2[i]=inf; if(!isen[M-1]) return -1; dp2[M-1]=1; int pt=M-1; for(int i=M;i<N;i++) { if(!isen[i]) continue; int mn=inf; while(pt < i-M) pt++; while(pt < i-1 && dp2[pt]>=inf) pt++; dp2[i]=dp2[pt]+1; } if(dp2[N-1]>=inf) return -1; return dp2[N-1]; }

컴파일 시 표준 에러 (stderr) 메시지

paint.cpp: In function 'int minimumInstructions(int, int, int, std::vector<int>, std::vector<int>, std::vector<std::vector<int> >)':
paint.cpp:81:11: warning: unused variable 'mn' [-Wunused-variable]
   81 |      int  mn=inf;
      |           ^~
#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...