// Born_To_Laugh - Hughie Do
#include <bits/stdc++.h>
#define alle(AC) AC.begin(), AC.end()
#define fi first
#define se second
using namespace std;
typedef long long ll;
[[maybe_unused]] const ll MOD = 998244353, INF = 1e9 + 7;
#define int ll
const int maxn = 310;
const int maxx = 9e4 + 5;
int n, m, k;
ll a[maxn];
void solve(){
cin >> n >> m >> k;
ll suma = 0;
for(int i=1; i<=n; ++i){
int x;cin >> x;
if(x < k){
cout << "Impossible\n";
return;
}
suma += x;
}
ll sum0 = 0;
for(int i=1; i<=m; ++i){
cin >> a[i];
sum0 += a[i];
}
if(sum0 < suma){
cout << "Impossible\n";
return;
}
sort(a + 1, a + 1 + m);
vector<int> dp(maxx, -INF);
dp[0] = 0;
for(int i=1; i<=m; ++i){
for(int j=sum0 - a[i]; j>=0; j--){
if(dp[j] == -INF)continue;
dp[j + a[i]] = max(dp[j + a[i]], dp[j] + 1);
}
}
for(int i=suma; i<=sum0; ++i){
if(dp[i] >= k){
cout << i - suma << '\n';
return;
}
}
cout << "Impossible\n";
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
solve();
}
| # | 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... |