結果

問題 No.4 おもりと天秤
ユーザー satanicsatanic
提出日時 2015-12-11 03:11:24
言語 C++11
(gcc 11.4.0)
結果
AC  
実行時間 3 ms / 5,000 ms
コード長 1,070 bytes
コンパイル時間 558 ms
コンパイル使用メモリ 71,424 KB
実行使用メモリ 4,384 KB
最終ジャッジ日時 2023-09-08 16:29:04
合計ジャッジ時間 1,555 ms
ジャッジサーバーID
(参考情報)
judge13 / judge12
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
4,380 KB
testcase_01 AC 2 ms
4,376 KB
testcase_02 AC 1 ms
4,380 KB
testcase_03 AC 1 ms
4,376 KB
testcase_04 AC 2 ms
4,376 KB
testcase_05 AC 2 ms
4,376 KB
testcase_06 AC 2 ms
4,380 KB
testcase_07 AC 3 ms
4,376 KB
testcase_08 AC 1 ms
4,376 KB
testcase_09 AC 2 ms
4,384 KB
testcase_10 AC 3 ms
4,380 KB
testcase_11 AC 2 ms
4,376 KB
testcase_12 AC 2 ms
4,380 KB
testcase_13 AC 1 ms
4,380 KB
testcase_14 AC 1 ms
4,376 KB
testcase_15 AC 2 ms
4,380 KB
testcase_16 AC 2 ms
4,376 KB
testcase_17 AC 2 ms
4,380 KB
testcase_18 AC 2 ms
4,380 KB
testcase_19 AC 2 ms
4,376 KB
testcase_20 AC 3 ms
4,376 KB
testcase_21 AC 2 ms
4,376 KB
testcase_22 AC 3 ms
4,380 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

#define IMPOS {cout << "impossible\n"; return 0;}
#define POS   {cout << "possible\n";   return 0;}

int main(){
  cin.tie(0);
  ios::sync_with_stdio(false);
  int n;
  cin >> n;
  vector<int> w(n);
  int total=0;

  for(int i=0; i<n; ++i){
    cin >> w[i];
    total+=w[i];
  }
  if(total%2==1) IMPOS;
  sort(w.begin(), w.end());
  if(total/2<w.back()) IMPOS;
  vector<bool> pattern(total/2, false);
  pattern[w[0]-1]=true;
  for(vector<int>::iterator w_it=w.begin()+1; w_it!=w.end(); ++w_it){
    vector<int> true_pattern;
    true_pattern.push_back(*w_it);
    for(vector<bool>::iterator pa_it=pattern.begin(); pa_it!=pattern.end(); ++pa_it){
      if(*pa_it==true){
	if(((pa_it-pattern.begin()+1)+*w_it)<=total/2){
	  true_pattern.push_back( (pa_it-pattern.begin()+1)+*w_it );
	}
      }
    }
    for(vector<int>::iterator true_it=true_pattern.begin(); true_it!=true_pattern.end(); ++true_it){
      pattern[(*true_it)-1]=true;
    }
  }
  if(pattern[total/2-1]==true) POS;
  IMPOS;
}
0