結果
問題 | No.545 ママの大事な二人の子供 |
ユーザー |
|
提出日時 | 2017-07-16 13:06:23 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 23 ms / 2,000 ms |
コード長 | 1,235 bytes |
コンパイル時間 | 1,715 ms |
コンパイル使用メモリ | 173,764 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-08 04:11:47 |
合計ジャッジ時間 | 3,062 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 32 |
ソースコード
#include <bits/stdc++.h>using namespace std;using ll = long long;#define rep(i,n) for(int (i)=0;(i)<(int)(n);++(i))#define all(x) (x).begin(),(x).end()#define pb push_back#define fi first#define se second#define dbg(x) cout<<#x" = "<<((x))<<endltemplate<class T,class U> ostream& operator<<(ostream& o, const pair<T,U> &p){o<<"("<<p.fi<<","<<p.se<<")";return o;}template<class T> ostream& operator<<(ostream& o, const vector<T> &v){o<<"[";for(T t:v){o<<t<<",";}o<<"]";return o;}int main(){int n;cin >>n;vector<ll> a(n),b(n);rep(i,n) cin >>a[i] >>b[i];int X = n/2, Y = n-X;vector<ll> x;rep(mask,1<<X){ll v = 0;rep(i,X){if(mask>>i&1) v += a[i];else v -= b[i];}x.pb(v);}sort(all(x));ll ans = LLONG_MAX;rep(mask,1<<Y){ll v = 0;rep(i,Y){if(mask>>i&1) v += a[X+i];else v -= b[X+i];}int idx = lower_bound(all(x),-v)-x.begin();for(int i=-1; i<=1; ++i){int j=idx+i;if(0<=j && j<x.size()) ans = min(ans,abs(v+x[j]));}}cout << ans << endl;return 0;}