제출 #1202855

#제출 시각아이디문제언어결과실행 시간메모리
1202855ezzzayPainting Walls (APIO20_paint)C++20
28 / 100
1595 ms25480 KiB
#include<bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back
#define ll long long
int minimumInstructions(int N, int M, int K, std::vector<int> C, std::vector<int> A, std::vector<std::vector<int>> B ) {
	vector<int>dp(N+2);
	for(int i=0;i<=N;i++){
		dp[i]=1e9;
	}
	deque<int>q;
	for(int i=0;i<M;i++)q.pb(i);
	dp[0]=0;
	vector< vector< bool >  > mp ( M+2, vector<bool> (K+5));
	for(int i=0;i<M;i++){
		for(auto x:B[i])mp[i][x]=1;
	}
	for(int i=M;i<=N;i++){
		for(int j=0;j<=M;j++){ 
			bool u=1;
			for(int k=0;k<M;k++){
				if( mp[q[k]] [C[i-(M-k)]] ==0){
					u=0;
				}
			}
			if(u){
				dp[i]=min(dp[i],dp[i-M]+1);
				for(int k=0;k<M;k++){
					dp[i-k]=min(dp[i-k],dp[i]);
				}
				for(int i=0;i<M;i++)q.pop_back();
				for(int i=0;i<M;i++)q.pb(i);
				break;
			}
			q.pb(q.front());
			q.pop_front();
		}
	}
	if(dp[N]==1e9)return -1;
	else return dp[N];
}
#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...