This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MX = 305;
int N, M, K;
int dp[MX][MX * MX];
int a[MX], b[MX];
int main() {
cin.tie(0); ios_base::sync_with_stdio(0);
memset(dp, -1, sizeof dp);
cin >> N >> M >> K;
ll sum = 0;
bool bad = M < K;
for(int i = 1; i <= N; i++) {
cin >> a[i];
sum += a[i];
bad |= a[i] < K;
}
for(int i = 1; i <= M; i++) cin >> b[i];
if(bad) {
cout << "Impossible\n";
return 0;
}
dp[0][0] = 0;
for(int i = 1; i <= M; i++) {
for(int s = 0; s < MX * MX; s++) {
dp[i][s] = max(dp[i][s], dp[i - 1][s]);
if(s >= b[i] && dp[i - 1][s - b[i]] != -1) dp[i][s] = max(dp[i][s], dp[i - 1][s - b[i]] + min(N, b[i]));
}
}
for(int s = sum; s < MX * MX; s++) {
if(dp[M][s] >= K * N) {
cout << s - sum << '\n';
return 0;
}
}
cout << "Impossible\n";
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |