結果
| 問題 |
No.545 ママの大事な二人の子供
|
| コンテスト | |
| ユーザー |
settsud
|
| 提出日時 | 2017-07-14 23:15:56 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 997 bytes |
| コンパイル時間 | 1,441 ms |
| コンパイル使用メモリ | 169,852 KB |
| 実行使用メモリ | 9,600 KB |
| 最終ジャッジ日時 | 2024-10-07 23:51:33 |
| 合計ジャッジ時間 | 3,081 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 26 WA * 6 |
ソースコード
#include "bits/stdc++.h"
using namespace std;
set<long long int >get_all(vector<pair<long long int,long long int>>v) {
set<long long int>aset;
for (int i = 0; i < (1 << v.size()); ++i) {
bitset<20>bs(i);
int sum = 0;
for (int j = 0; j < v.size(); ++j) {
if (bs[j])sum += v[j].first;
else sum -= v[j].second;
}
aset.emplace(sum);
}
return aset;
}
int main() {
int N; cin >> N;
vector<pair<long long int,long long int>>ds;
for (int i = 0; i < N; ++i) {
long long int a, b; cin >> a >> b;
ds.emplace_back(a, b);
}
auto aset(get_all(vector<pair<long long int, long long int>>(ds.begin(), ds.begin() + N / 2)));
auto bset(get_all(vector<pair<long long int, long long int>>(ds.begin() + N / 2, ds.end())));
long long int ans = 1e18;
for (auto as : aset) {
auto it = bset.lower_bound(-as);
if (it != bset.end()) {
ans = min(ans, abs(*it+ as));
}
if (it != bset.begin()) {
ans = min(ans, abs(*(prev(it))+ as));
}
}
cout << ans << endl;
return 0;
}
settsud