結果
| 問題 |
No.545 ママの大事な二人の子供
|
| コンテスト | |
| ユーザー |
T1610
|
| 提出日時 | 2019-03-23 02:16:22 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 22 ms / 2,000 ms |
| コード長 | 1,265 bytes |
| コンパイル時間 | 1,666 ms |
| コンパイル使用メモリ | 175,248 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-09-19 13:02:49 |
| 合計ジャッジ時間 | 2,851 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 32 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) REP(i,0,n)
#define REP(i,s,e) for(int i=(s); i<(int)(e); i++)
#define repr(i, n) REPR(i, n, 0)
#define REPR(i, s, e) for(int i=(int)(s-1); i>=(int)(e); i--)
#define pb push_back
#define all(r) r.begin(),r.end()
#define rall(r) r.rbegin(),r.rend()
#define fi first
#define se second
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int INF = 1e9;
const ll MOD = 1e9 + 7;
double EPS = 1e-8;
int main(){
int n;
cin >> n;
vl a(n), b(n);
rep(i, n) cin >> a[i] >> b[i];
int m = n / 2;
vector<ll> v(1<<m);
rep(mask, 1<<m) {
rep(i, m) {
if(mask & (1<<i)) v[mask] += a[i];
else v[mask] -= b[i];
}
}
sort(all(v));
v.erase(unique(all(v)), v.end());
ll ans = 1e18;
rep(mask, 1<<(n-m)) {
ll tmp = 0LL;
rep(i, n - m) {
if(mask & (1<<i)) tmp += a[i+m];
else tmp -= b[i+m];
}
auto it = lower_bound(all(v), -tmp);
if(it != v.end()) ans = min(ans, abs(tmp + *it));
if(it != v.begin()) ans = min(ans, abs(tmp + *(--it)));
}
cout << ans << endl;
return 0;
}
T1610