제출 #38792

#제출 시각아이디문제언어결과실행 시간메모리
38792DenXman111Bootfall (IZhO17_bootfall)C++14
100 / 100
423 ms7920 KiB
#include <bits/stdc++.h> const int MAXN = 323456; using namespace std; int a[MAXN], ans[MAXN], dp[MAXN], d[MAXN]; int main() { // freopen("bootfall.in", "r", stdin); // freopen("bootfall.out", "w", stdout); int n, i, j, sum = 0, x = 0; cin >> n; dp[0] = 1; for (i = 1; i <= n; i++){ cin >> a[i]; for (j = sum; j >= 0; j--) dp[j + a[i]] += dp[j]; sum += a[i]; } if (sum % 2 == 1 || dp[sum / 2] == 0) return cout << 0 << endl, 0; for (j = 0; j <= sum; j++) d[j] = dp[j]; for (i = 1; i <= n; i++){ for (j = 0; j <= sum; j++) { d[j + a[i]] -= d[j]; x = abs(sum - j - a[i] - j); if (d[j] != 0 && ans[x] == i - 1) ans[x] = i; d[j] = dp[j]; } } vector < int > v; for (i = 0; i <= sum; i++) if (ans[i] == n) v.push_back(i); cout << v.size() << endl; for (i = 0; i < v.size(); i++) cout << v[i] << " "; return 0; }

컴파일 시 표준 에러 (stderr) 메시지

bootfall.cpp: In function 'int main()':
bootfall.cpp:32:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (i = 0; i < v.size(); i++) cout << v[i] << " ";
                   ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...