// 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;
const int maxn = 310;
int n, m, k;
int 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;
}
for(int i=1; i<=m; ++i)cin >> a[i];
if(accumulate(a + 1, a + 1 + m, 0ll) < suma){
cout << "Impossible\n";
return;
}
sort(a + 1, a + 1 + m);
vector<int> dp(9e4 + 5, -INF);
dp[0] = 0;
for(int i=1; i<=m; ++i){
for(int j=9e4 + 3 - a[i]; j >= 0; j--){
dp[j + a[i]] = max(dp[j + a[i]], dp[j] + 1);
}
}
int ans = -INF;
for(int i=suma; i<=9e4 + 3; ++i){
if(dp[i] >= k){
ans = i;
break;
}
}
if(ans == -INF)cout << "Impossible\n";
else cout << ans - suma << '\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... |