이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define InTheNameOfGod ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);
using ll = long long;
const int maxN = 2e5 + 5;
const int MOD = 1e9 + 7;
const int INF = 1e9 + 7;
int main() {
/*#ifndef ONLINE_JUDGE
freopen("../../input.txt", "r", stdin);
freopen("../../output.txt", "w", stdout);
#endif*/
InTheNameOfGod;
int n,m,k;
cin >>n >> m >> k;
vector<int> a(n),b(m);
int s = 0, s2 = 0, must = (n)*(k-1);
bool ok = 0;
for(int i = 0; i < n; i++) {
cin >> a[i];
s2 += a[i];
if(a[i] < k) ok = 1;
}
for(int &i : b) {
cin >> i;
s += i;
}
if(ok || m < k) {
cout << "Impossible\n";
return 0;
}
vector<vector<int> > dp(m+1, vector<int> (s+1, INF));
int mo = INF;
dp[0][0] = n*k;
for(int i = 0; i < m; i++) {
for(int j = 0; j <= s; j++) {
if(dp[i][j] != INF) {
dp[i+1][j] = min(dp[i+1][j], dp[i][j]);
if(j + b[i] >= s2 && dp[i][j] - min(b[i], n) <= 0) mo = min(mo, j+b[i] - s2);
dp[i+1][j+b[i]] = min(dp[i+1][j+b[i]], dp[i][j] - min(b[i], n));
}
//cout << i << ", " << j << ": " << dp[i][j] << endl;
}
}
if(mo == INF) cout << "Impossible" << endl;
else cout << mo << endl;
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
kitchen.cpp: In function 'int main()':
kitchen.cpp:23:25: warning: unused variable 'must' [-Wunused-variable]
23 | int s = 0, s2 = 0, must = (n)*(k-1);
| ^~~~
# | 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... |