結果
問題 | No.4 おもりと天秤 |
ユーザー |
![]() |
提出日時 | 2015-11-06 13:14:11 |
言語 | C++11 (gcc 13.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 866 bytes |
コンパイル時間 | 489 ms |
コンパイル使用メモリ | 63,292 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-09-13 13:01:06 |
合計ジャッジ時間 | 1,344 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 14 WA * 9 |
ソースコード
#include<iostream> #include<stdio.h> #include<vector> #include<algorithm> using namespace std; int n; vector<int> w; int dp[101][101]; int rec(int i, int j){ if(dp[i][j]!=-1){ return dp[i][j]; } int res; if(i==n){ res = 0; }else if(j<w[i]){ res = rec(i+1, j); }else{ res = max(rec(i+1, j), rec(i+1, j-w[i])+w[i]); } dp[i][j] = res; return res; } int main(){ fill_n((int*)dp, 101*101, -1); cin>> n; int a, sum = 0; for(int i=0; i<n; i++){ cin>> a; w.push_back(a); sum += w[i]; } int W; if(sum%2==1){ cout<< "impossible"<< endl; return 0; }else{ W = sum/2; } int ans = rec(0, W); if(ans==W){ cout<< "possible"<< endl; }else{ cout<< "impossible"<< endl; } return 0; }