Submission #1746297
Source Code Expand
#include <iostream> #include <cstdio> #include <cstring> #include <climits> #include <functional> #define N 100000 using namespace std; int parent(int i){return((i-1)/2);} int lchild(int i){return(2*i+1);} int rchild(int i){return(2*i+2);} bool gt(int x, int y){ return(x > y); } bool lt(int x, int y){ return(x < y); } void push(int x, int *pq, int *q_max, function<bool(int, int)> f){ pq[*q_max] = x; int idx = *q_max; (*q_max)++; while (idx > 0) { if (f(pq[idx], pq[parent(idx)])) { int tmp = pq[parent(idx)]; pq[parent(idx)] = pq[idx]; pq[idx] = tmp; idx = parent(idx); } else { return; } } } int pop(int *pq, int *q_max, function<bool(int, int)> f){ if (*q_max < 0) { cerr << "queue is empty." << endl; return 0; } int result = pq[0]; pq[0] = pq[--(*q_max)]; int idx = 0; while (lchild(idx) < *q_max) { if (f(pq[idx], pq[lchild(idx)]) && f(pq[idx], pq[rchild(idx)])) { return(result); } if (f(pq[lchild(idx)], pq[rchild(idx)])) { int tmp = pq[lchild(idx)]; pq[lchild(idx)] = pq[idx]; pq[idx] = tmp; idx = lchild(idx); } else { int tmp = pq[rchild(idx)]; pq[rchild(idx)] = pq[idx]; pq[idx] = tmp; idx = rchild(idx); } } return(result); } int main(){ int n; int a1_pq[N+1], a2[N+1], a3_pq[N+1]; int a1_pq_max = 0; int a3_pq_max = 0; long long a1_max[N+1], a3_min[N+1]; cin >> n; a1_max[0] = 0; a3_min[n] = 0; for (int i=0;i<n;i++) { int a; cin >> a; push(a, a1_pq, &a1_pq_max, lt); a1_max[0] += a; } for (int i=0;i<n;i++) { int a; cin >> a; a2[i] = a; } for (int i=0;i<n;i++) { int a; cin >> a; push(a, a3_pq, &a3_pq_max, gt); a3_min[n] += a; } for (int i=0;i<n;i++) { if (a1_pq[0] < a2[i]) { a1_max[i+1] = a2[i] - a1_pq[0] + a1_max[i]; pop(a1_pq, &a1_pq_max, lt); push(a2[i], a1_pq, &a1_pq_max, lt); } else { a1_max[i+1] = a1_max[i]; } } for (int i=n;i>0;i--) { if (a3_pq[0] > a2[i-1]) { a3_min[i-1] = a2[i-1] - a3_pq[0] + a3_min[i]; pop(a3_pq, &a3_pq_max, gt); push(a2[i-1], a3_pq, &a3_pq_max, gt); } else { a3_min[i-1] = a3_min[i]; } } long long result = LLONG_MIN; for (int i=0;i<=n;i++) { if (a1_max[i] - a3_min[i] > result) { result = a1_max[i] - a3_min[i]; } } cout << result << endl; }
Submission Info
Submission Time | |
---|---|
Task | D - 3N Numbers |
User | ntgo |
Language | C++14 (GCC 5.4.1) |
Score | 500 |
Code Size | 2555 Byte |
Status | AC |
Exec Time | 155 ms |
Memory | 2944 KB |
Judge Result
Set Name | Sample | Subtask | All | ||||||
---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 300 / 300 | 200 / 200 | ||||||
Status |
|
|
|
Set Name | Test Cases |
---|---|
Sample | 0_00.txt, 0_01.txt, 0_02.txt |
Subtask | 0_00.txt, 0_01.txt, 0_02.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt, 1_20.txt, 1_21.txt, 1_22.txt, 1_23.txt |
All | 0_00.txt, 0_01.txt, 0_02.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt, 1_20.txt, 1_21.txt, 1_22.txt, 1_23.txt, 2_00.txt, 2_01.txt, 2_02.txt, 2_03.txt, 2_04.txt, 2_05.txt, 2_06.txt, 2_07.txt, 2_08.txt, 2_09.txt, 2_10.txt, 2_11.txt, 2_12.txt, 2_13.txt, 2_14.txt, 2_15.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
0_00.txt | AC | 1 ms | 256 KB |
0_01.txt | AC | 1 ms | 256 KB |
0_02.txt | AC | 1 ms | 256 KB |
1_00.txt | AC | 1 ms | 256 KB |
1_01.txt | AC | 1 ms | 256 KB |
1_02.txt | AC | 1 ms | 256 KB |
1_03.txt | AC | 2 ms | 2304 KB |
1_04.txt | AC | 1 ms | 256 KB |
1_05.txt | AC | 2 ms | 2304 KB |
1_06.txt | AC | 1 ms | 256 KB |
1_07.txt | AC | 1 ms | 256 KB |
1_08.txt | AC | 2 ms | 2304 KB |
1_09.txt | AC | 2 ms | 256 KB |
1_10.txt | AC | 3 ms | 2304 KB |
1_11.txt | AC | 2 ms | 256 KB |
1_12.txt | AC | 2 ms | 256 KB |
1_13.txt | AC | 2 ms | 256 KB |
1_14.txt | AC | 3 ms | 2304 KB |
1_15.txt | AC | 2 ms | 256 KB |
1_16.txt | AC | 2 ms | 2304 KB |
1_17.txt | AC | 2 ms | 256 KB |
1_18.txt | AC | 2 ms | 2304 KB |
1_19.txt | AC | 2 ms | 256 KB |
1_20.txt | AC | 3 ms | 256 KB |
1_21.txt | AC | 3 ms | 256 KB |
1_22.txt | AC | 3 ms | 2304 KB |
1_23.txt | AC | 3 ms | 256 KB |
2_00.txt | AC | 49 ms | 2944 KB |
2_01.txt | AC | 135 ms | 2944 KB |
2_02.txt | AC | 130 ms | 2944 KB |
2_03.txt | AC | 115 ms | 2944 KB |
2_04.txt | AC | 115 ms | 2944 KB |
2_05.txt | AC | 116 ms | 2944 KB |
2_06.txt | AC | 116 ms | 2944 KB |
2_07.txt | AC | 101 ms | 2944 KB |
2_08.txt | AC | 66 ms | 2944 KB |
2_09.txt | AC | 65 ms | 2944 KB |
2_10.txt | AC | 66 ms | 2944 KB |
2_11.txt | AC | 65 ms | 2944 KB |
2_12.txt | AC | 153 ms | 2944 KB |
2_13.txt | AC | 155 ms | 2944 KB |
2_14.txt | AC | 154 ms | 2944 KB |
2_15.txt | AC | 153 ms | 2944 KB |