Submission #748456

#TimeUsernameProblemLanguageResultExecution timeMemory
748456mariowongKitchen (BOI19_kitchen)C++14
100 / 100
31 ms684 KiB
#include <bits/stdc++.h>
using namespace std;
 
int n,m,k,dp[90005],a[305],b[305],sum; 
 
void impossible(){
	cout << "Impossible\n";
	exit(0);
}
int main() {
	ios::sync_with_stdio(false); cin.tie(0);
	cin >> n >> m >> k;
	if (m < k) impossible();
	for (int i=1;i<=n;i++){
		cin >> a[i];
		sum+=a[i];
		if (a[i] < k) impossible();
	}
	for (int i=1;i<=90000;i++){
		dp[i]=-1;
	}
	for (int i=1;i<=m;i++){
		cin >> b[i];
		for (int j=90000;j>=b[i];j--){
			if (dp[j] == -1 && dp[j-b[i]] >= 0) 
			dp[j]=dp[j-b[i]]+min(b[i],n);
			else
			if (dp[j] > 0 && dp[j-b[i]] >= 0) 
			dp[j]=max(dp[j],dp[j-b[i]]+min(b[i],n));
		}
	}
	for (int i=sum;i<=90000;i++){
		if (dp[i] >= n*k){
			cout << i-sum << "\n";
			return 0;			
		}
	}
	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...