제출 #896949

#제출 시각아이디문제언어결과실행 시간메모리
896949pccKitchen (BOI19_kitchen)C++17
100 / 100
30 ms824 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define pll pair<ll,ll>
#define pii pair<int,int>
#define fs first
#define sc second
#define tlll tuple<ll,ll,ll>

const int mxn = 303;
const int mxc = mxn*mxn;

int N,M,K,arr[mxn],dp[mxc],brr[mxn];

int main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>N>>M>>K;
	int sum = 0;
	for(int i = 0;i<N;i++)cin>>arr[i],sum += arr[i];
	for(int i = 0;i<M;i++)cin>>brr[i];
	for(int i = 0;i<N;i++){
		if(arr[i]<K){
			cout<<"Impossible";
			return 0;
		}
	}
	memset(dp,-1,sizeof(dp));
	dp[0] = 0;
	for(int i = 0;i<M;i++){
		for(int j = mxc-1;j>=brr[i];j--){
			if(dp[j-brr[i]] != -1)dp[j] = max(dp[j],dp[j-brr[i]]+min(brr[i],N));
		}
	}
	for(int i = sum;i<mxc;i++){
		if(dp[i]>=N*K){
			cout<<i-sum;
			return 0;
		}
	}
	cout<<"Impossible";
	return 0;
}
#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...