結果
問題 |
No.4 おもりと天秤
|
ユーザー |
|
提出日時 | 2024-05-19 19:36:09 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 9 ms / 5,000 ms |
コード長 | 793 bytes |
コンパイル時間 | 1,960 ms |
コンパイル使用メモリ | 172,880 KB |
実行使用メモリ | 11,136 KB |
最終ジャッジ日時 | 2024-12-20 17:15:30 |
合計ジャッジ時間 | 2,820 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
外部呼び出し有り |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 23 |
ソースコード
#include <bits/stdc++.h> using namespace std; using ll = long long; using vll = vector<long long>; int main() { ll n; cin >> n; vll w(n); ll sum = 0; for (ll i = 0; i < n; i++) { cin >> w[i]; sum += w[i]; } if (sum % 2 != 0) { cout << "impossible" << endl; } else { vector<vector<ll>> dp(n + 1, vector<ll>(sum)); dp[0][0] = 1; for (ll i = 0; i < n; i++) { for (ll j = 0; j < sum; j++) { if (dp[i][j] == 1) { dp[i + 1][j] = 1; if (j + w[i] < sum) dp[i + 1][j + w[i]] = 1; } } } cout << ((dp[n - 1][(ll)sum / 2] == 1) ? "possible" : "impossible"); } system("pause"); }