#include<iostream>
#include<vector>
using namespace std;
const int NMAX = 300;
const int INF = 1e9 + 4;
int a[NMAX+1] , b[NMAX+1];
int dp[NMAX*NMAX+1][NMAX+1]; // dp[sum] = cate ore max sunt eligibile pt n*k
int main ()
{
int n, m, k;
cin >> n >> m >> k;
int sumA = 0;
bool bad = 0;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
sumA += a[i];
if (a[i] < k) bad = 1;
}
int sumB = 0;
for (int i = 1; i <= m; i++)
{
cin >> b[i];
sumB += b[i];
}
if (bad || sumB < sumA) {
cout << "Impossible\n";
return 0;
}
for (int i = 0; i <= max(sumA , sumB); i++)
{
for (int j = 0; j <= m; j++)
dp[i][j] = -INF;
}
dp[0][0] = 0;
for (int sum = 0; sum <= sumB; sum++)
{
for (int i = 1; i <= m; i++)
{
int addToNK = min(b[i] , n);
dp[sum+b[i]][i] = max(dp[sum+b[i]][i] , dp[sum][i-1] + addToNK);
dp[sum][i] = max(dp[sum][i] , dp[sum][i-1]);
}
}
int ans = 0;
for (int i = sumA; i <= sumB; i++)
{
if (dp[i][m] >= n*k)
{
ans = i - sumA;
break;
}
}
if (ans)
cout << ans << '\n';
else cout << "Impossible\n";
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
2652 KB |
Output is correct |
2 |
Correct |
1 ms |
2652 KB |
Output is correct |
3 |
Correct |
1 ms |
2648 KB |
Output is correct |
4 |
Correct |
1 ms |
2652 KB |
Output is correct |
5 |
Correct |
1 ms |
2648 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
0 ms |
348 KB |
Output is correct |
8 |
Correct |
1 ms |
348 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
2652 KB |
Output is correct |
2 |
Correct |
1 ms |
2652 KB |
Output is correct |
3 |
Correct |
1 ms |
2648 KB |
Output is correct |
4 |
Correct |
1 ms |
2652 KB |
Output is correct |
5 |
Correct |
1 ms |
2648 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
0 ms |
348 KB |
Output is correct |
8 |
Correct |
1 ms |
348 KB |
Output is correct |
9 |
Correct |
1 ms |
4700 KB |
Output is correct |
10 |
Correct |
1 ms |
4700 KB |
Output is correct |
11 |
Correct |
1 ms |
2648 KB |
Output is correct |
12 |
Incorrect |
1 ms |
2652 KB |
Output isn't correct |
13 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
116 ms |
78428 KB |
Output is correct |
2 |
Correct |
60 ms |
68188 KB |
Output is correct |
3 |
Incorrect |
125 ms |
58056 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
2652 KB |
Output is correct |
2 |
Correct |
1 ms |
2652 KB |
Output is correct |
3 |
Incorrect |
1 ms |
2652 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
2652 KB |
Output is correct |
2 |
Correct |
1 ms |
2652 KB |
Output is correct |
3 |
Correct |
1 ms |
2648 KB |
Output is correct |
4 |
Correct |
1 ms |
2652 KB |
Output is correct |
5 |
Correct |
1 ms |
2648 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
0 ms |
348 KB |
Output is correct |
8 |
Correct |
1 ms |
348 KB |
Output is correct |
9 |
Correct |
1 ms |
4700 KB |
Output is correct |
10 |
Correct |
1 ms |
4700 KB |
Output is correct |
11 |
Correct |
1 ms |
2648 KB |
Output is correct |
12 |
Incorrect |
1 ms |
2652 KB |
Output isn't correct |
13 |
Halted |
0 ms |
0 KB |
- |