Submission #691263
Source Code Expand
#include <bits/stdc++.h> using namespace std; #define all(c) ((c).begin()), ((c).end()) #define iter(c) __typeof((c).begin()) #define present(c, e) ((c).find((e)) != (c).end()) #define cpresent(c, e) (find(all(c), (e)) != (c).end()) #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define tr(c, i) for (iter(c) i = (c).begin(); i != (c).end(); ++i) #define pb push_back #define mp make_pair typedef long long ll; const ll INF = 1LL << 60; typedef ll val_t; struct node_t { val_t v; node_t *l, *r; node_t(val_t v) : v(v), l(NULL), r(NULL) {} }; node_t *merge(node_t *x, node_t *y) { if (!x || !y) return x ? x : y; if (x->v > y->v) swap(x, y); x->r = merge(x->r, y); swap(x->l, x->r); return x; } node_t *add(node_t *x, val_t v) { return merge(x, new node_t(v)); } node_t *pop(node_t *x) { return merge(x->l, x->r); } ll fst(node_t *p) { return p ? p->v : INF; } ll snd(node_t *p) { return p ? min(fst(p->l), fst(p->r)) : INF; } typedef pair<ll, ll> pii; node_t *hpq[100010]; ll rig[100010], lef[100010], cst[100010]; ll hu_tucker(ll N, ll *A) { priority_queue<pii, vector<pii>, greater<pii> > mpq; rep (i, N - 1) { hpq[i] = NULL; rig[i] = i + 1; lef[i] = i - 1; cst[i] = A[i] + A[i + 1]; mpq.push(mp(cst[i], i)); } ll ans = 0; rep (k, N - 1) { ll c, i; do { c = mpq.top().first; i = mpq.top().second; mpq.pop(); } while (rig[i] == -1 || cst[i] != c); bool ml = false, mr = false; if (A[i] + fst(hpq[i]) == c) { hpq[i] = pop(hpq[i]); ml = true; } else if (A[i] + A[rig[i]] == c) { ml = mr = true; } else if (fst(hpq[i]) + snd(hpq[i]) == c) { hpq[i] = pop(pop(hpq[i])); } else { hpq[i] = pop(hpq[i]); mr = true; } ans += c; hpq[i] = add(hpq[i], c); if (ml) A[i] = INF; if (mr) A[rig[i]] = INF; if (ml && i > 0) { ll j = lef[i]; hpq[j] = merge(hpq[j], hpq[i]); rig[j] = rig[i]; rig[i] = -1; lef[rig[j]] = j; i = j; } if (mr && rig[i] + 1 < N) { ll j = rig[i]; hpq[i] = merge(hpq[i], hpq[j]); rig[i] = rig[j]; rig[j] = -1; lef[rig[i]] = i; } cst[i] = A[i] + A[rig[i]]; cst[i] = min(cst[i], min(A[i], A[rig[i]]) + fst(hpq[i])); cst[i] = min(cst[i], fst(hpq[i]) + snd(hpq[i])); mpq.push(mp(cst[i], i)); } return ans; } ll N, A[100010]; int main() { scanf("%lld", &N); rep (i, N) scanf("%lld", A + i); ll ans = hu_tucker(N, A); printf("%lld\n", ans); }
Submission Info
Submission Time | |
---|---|
Task | C - 最適二分探索木 |
User | ei13333 |
Language | C++14 (GCC 5.4.1) |
Score | 101 |
Code Size | 2695 Byte |
Status | AC |
Exec Time | 133 ms |
Memory | 8816 KB |
Compile Error
./Main.cpp: In function ‘int main()’: ./Main.cpp:118:20: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] scanf("%lld", &N); ^ ./Main.cpp:119:34: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] rep (i, N) scanf("%lld", A + i); ^
Judge Result
Set Name | Sample | Dataset1 | Dataset2 | Dataset3 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 50 / 50 | 50 / 50 | 1 / 1 | ||||||||
Status |
|
|
|
|
Set Name | Test Cases |
---|---|
Sample | 00_sample_01.txt |
Dataset1 | 00_sample_01.txt, 01_00.txt, 01_01.txt, 01_02.txt, 01_03.txt, 01_04.txt, 01_05.txt, 01_06.txt, 01_07.txt, 01_08.txt, 01_09.txt, 01_10.txt, 01_11.txt, 01_12.txt, 01_13.txt, 01_14.txt, 01_15.txt, 01_16.txt, 01_17.txt, 01_18.txt, 01_19.txt, 01_20.txt, 01_21.txt, 01_22.txt, 01_23.txt, 01_24.txt, 01_25.txt, 01_26.txt, 01_27.txt, 01_28.txt, 01_29.txt |
Dataset2 | 00_sample_01.txt, 01_00.txt, 01_01.txt, 01_02.txt, 01_03.txt, 01_04.txt, 01_05.txt, 01_06.txt, 01_07.txt, 01_08.txt, 01_09.txt, 01_10.txt, 01_11.txt, 01_12.txt, 01_13.txt, 01_14.txt, 01_15.txt, 01_16.txt, 01_17.txt, 01_18.txt, 01_19.txt, 01_20.txt, 01_21.txt, 01_22.txt, 01_23.txt, 01_24.txt, 01_25.txt, 01_26.txt, 01_27.txt, 01_28.txt, 01_29.txt, 02_00.txt, 02_01.txt, 02_02.txt, 02_03.txt, 02_04.txt, 02_05.txt, 02_06.txt, 02_07.txt, 02_08.txt, 02_09.txt, 02_10.txt, 02_11.txt, 02_12.txt, 02_13.txt, 02_14.txt, 02_15.txt, 02_16.txt, 02_17.txt, 02_18.txt, 02_19.txt, 02_20.txt, 02_21.txt, 02_22.txt, 02_23.txt, 02_24.txt, 02_25.txt, 02_26.txt, 02_27.txt, 02_28.txt, 02_29.txt |
Dataset3 | 00_sample_01.txt, 01_00.txt, 01_01.txt, 01_02.txt, 01_03.txt, 01_04.txt, 01_05.txt, 01_06.txt, 01_07.txt, 01_08.txt, 01_09.txt, 01_10.txt, 01_11.txt, 01_12.txt, 01_13.txt, 01_14.txt, 01_15.txt, 01_16.txt, 01_17.txt, 01_18.txt, 01_19.txt, 01_20.txt, 01_21.txt, 01_22.txt, 01_23.txt, 01_24.txt, 01_25.txt, 01_26.txt, 01_27.txt, 01_28.txt, 01_29.txt, 02_00.txt, 02_01.txt, 02_02.txt, 02_03.txt, 02_04.txt, 02_05.txt, 02_06.txt, 02_07.txt, 02_08.txt, 02_09.txt, 02_10.txt, 02_11.txt, 02_12.txt, 02_13.txt, 02_14.txt, 02_15.txt, 02_16.txt, 02_17.txt, 02_18.txt, 02_19.txt, 02_20.txt, 02_21.txt, 02_22.txt, 02_23.txt, 02_24.txt, 02_25.txt, 02_26.txt, 02_27.txt, 02_28.txt, 02_29.txt, 03_00.txt, 03_01.txt, 03_02.txt, 03_03.txt, 03_04.txt, 03_05.txt, 03_06.txt, 03_07.txt, 03_08.txt, 03_09.txt, 03_10.txt, 03_11.txt, 03_12.txt, 03_13.txt, 03_14.txt, 03_15.txt, 03_16.txt, 03_17.txt, 03_18.txt, 03_19.txt, 03_20.txt, 03_21.txt, 03_22.txt, 03_23.txt, 03_24.txt, 03_25.txt, 03_26.txt, 03_27.txt, 03_28.txt, 03_29.txt, 03_30.txt, 03_31.txt, 03_32.txt, 03_33.txt, 03_34.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00_sample_01.txt | AC | 5 ms | 256 KB |
01_00.txt | AC | 4 ms | 256 KB |
01_01.txt | AC | 4 ms | 256 KB |
01_02.txt | AC | 5 ms | 256 KB |
01_03.txt | AC | 4 ms | 256 KB |
01_04.txt | AC | 4 ms | 256 KB |
01_05.txt | AC | 4 ms | 256 KB |
01_06.txt | AC | 4 ms | 256 KB |
01_07.txt | AC | 4 ms | 256 KB |
01_08.txt | AC | 4 ms | 256 KB |
01_09.txt | AC | 4 ms | 256 KB |
01_10.txt | AC | 4 ms | 256 KB |
01_11.txt | AC | 4 ms | 256 KB |
01_12.txt | AC | 4 ms | 256 KB |
01_13.txt | AC | 4 ms | 256 KB |
01_14.txt | AC | 4 ms | 256 KB |
01_15.txt | AC | 4 ms | 256 KB |
01_16.txt | AC | 4 ms | 256 KB |
01_17.txt | AC | 6 ms | 256 KB |
01_18.txt | AC | 4 ms | 256 KB |
01_19.txt | AC | 4 ms | 256 KB |
01_20.txt | AC | 4 ms | 256 KB |
01_21.txt | AC | 4 ms | 256 KB |
01_22.txt | AC | 4 ms | 256 KB |
01_23.txt | AC | 4 ms | 256 KB |
01_24.txt | AC | 4 ms | 256 KB |
01_25.txt | AC | 4 ms | 256 KB |
01_26.txt | AC | 4 ms | 256 KB |
01_27.txt | AC | 4 ms | 256 KB |
01_28.txt | AC | 4 ms | 256 KB |
01_29.txt | AC | 4 ms | 256 KB |
02_00.txt | AC | 6 ms | 512 KB |
02_01.txt | AC | 7 ms | 512 KB |
02_02.txt | AC | 7 ms | 512 KB |
02_03.txt | AC | 7 ms | 512 KB |
02_04.txt | AC | 6 ms | 512 KB |
02_05.txt | AC | 7 ms | 512 KB |
02_06.txt | AC | 6 ms | 512 KB |
02_07.txt | AC | 7 ms | 512 KB |
02_08.txt | AC | 7 ms | 512 KB |
02_09.txt | AC | 7 ms | 512 KB |
02_10.txt | AC | 7 ms | 512 KB |
02_11.txt | AC | 7 ms | 512 KB |
02_12.txt | AC | 7 ms | 512 KB |
02_13.txt | AC | 6 ms | 512 KB |
02_14.txt | AC | 6 ms | 512 KB |
02_15.txt | AC | 7 ms | 512 KB |
02_16.txt | AC | 6 ms | 512 KB |
02_17.txt | AC | 6 ms | 512 KB |
02_18.txt | AC | 6 ms | 512 KB |
02_19.txt | AC | 6 ms | 512 KB |
02_20.txt | AC | 6 ms | 512 KB |
02_21.txt | AC | 6 ms | 512 KB |
02_22.txt | AC | 6 ms | 512 KB |
02_23.txt | AC | 6 ms | 512 KB |
02_24.txt | AC | 6 ms | 512 KB |
02_25.txt | AC | 7 ms | 512 KB |
02_26.txt | AC | 7 ms | 512 KB |
02_27.txt | AC | 7 ms | 512 KB |
02_28.txt | AC | 6 ms | 512 KB |
02_29.txt | AC | 6 ms | 512 KB |
03_00.txt | AC | 121 ms | 8816 KB |
03_01.txt | AC | 117 ms | 8816 KB |
03_02.txt | AC | 117 ms | 8816 KB |
03_03.txt | AC | 122 ms | 8816 KB |
03_04.txt | AC | 119 ms | 8816 KB |
03_05.txt | AC | 97 ms | 8816 KB |
03_06.txt | AC | 111 ms | 8816 KB |
03_07.txt | AC | 117 ms | 8816 KB |
03_08.txt | AC | 119 ms | 8816 KB |
03_09.txt | AC | 117 ms | 8816 KB |
03_10.txt | AC | 113 ms | 8816 KB |
03_11.txt | AC | 116 ms | 8816 KB |
03_12.txt | AC | 122 ms | 8816 KB |
03_13.txt | AC | 119 ms | 8816 KB |
03_14.txt | AC | 118 ms | 8816 KB |
03_15.txt | AC | 119 ms | 8816 KB |
03_16.txt | AC | 115 ms | 8816 KB |
03_17.txt | AC | 126 ms | 8816 KB |
03_18.txt | AC | 113 ms | 8816 KB |
03_19.txt | AC | 120 ms | 8816 KB |
03_20.txt | AC | 118 ms | 8816 KB |
03_21.txt | AC | 120 ms | 8816 KB |
03_22.txt | AC | 117 ms | 8816 KB |
03_23.txt | AC | 125 ms | 8816 KB |
03_24.txt | AC | 122 ms | 8816 KB |
03_25.txt | AC | 133 ms | 8816 KB |
03_26.txt | AC | 123 ms | 8816 KB |
03_27.txt | AC | 121 ms | 8816 KB |
03_28.txt | AC | 116 ms | 8816 KB |
03_29.txt | AC | 125 ms | 8816 KB |
03_30.txt | AC | 121 ms | 8816 KB |
03_31.txt | AC | 126 ms | 8816 KB |
03_32.txt | AC | 121 ms | 8816 KB |
03_33.txt | AC | 121 ms | 8816 KB |
03_34.txt | AC | 119 ms | 8816 KB |