Submission #64590473


Source Code Expand

#include<iostream>
#include<algorithm>
#include<queue>
#include<vector>
#include<set>
using namespace std;
typedef long long ll;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n;
    cin >> n;
    vector<ll> vec(n + 1);
    for(int i = 1; i <= n; i++) cin >> vec[i];
    multiset<ll> sa, sb;
    vector<ll> pre(n + 1), suf(n + 2), pres(n + 1);
    for(int i = 1; i <= n; i++) pres[i] = pres[i - 1] + vec[i];
    ll now = 0;
    for(int i = 2; i <= n; i += 2){
        ll a = vec[i - 1], b = vec[i];
        if(a > b) swap(a, b);
        if(sa.empty()){
            now += b;
            sa.insert(a);
            sb.insert(b);
            continue;
        }
        if(a > (*sb.begin())){
            now -= (*sb.begin());
            sa.insert(*sb.begin());
            sb.erase(sb.begin());
            now += a + b;
            sb.insert(a);
            sb.insert(b);
        }
        else if(b < (*prev(sa.end()))){
            now += (*prev(sa.end()));
            sb.insert(*prev(sa.end()));
            sa.erase(prev(sa.end()));
            sa.insert(a);
            sa.insert(b);
        }
        else{
            now += b;
            sa.insert(a);
            sb.insert(b);
        }
        pre[i] = now - pres[i] + now;
    }
    multiset<ll>().swap(sa);
    multiset<ll>().swap(sb);
    now = 0;
    for(int i = n; i > 1; i -= 2){
        ll a = vec[i - 1], b = vec[i];
        if(a > b) swap(a, b);
        if(sa.empty()){
            sa.insert(a);
            sb.insert(b);
            now += b;
            continue;
        }
        if(a > (*sb.begin())){
            now -= (*sb.begin());
            sa.insert(*sb.begin());
            sb.erase(sb.begin());
            now += a + b;
            sb.insert(a);
            sb.insert(b);
        }
        else if(b < (*prev(sa.end()))){
            now += (*prev(sa.end()));
            sb.insert(*prev(sa.end()));
            sa.erase(prev(sa.end()));
            sa.insert(a);
            sa.insert(b);
        }
        else{
            now += b;
            sa.insert(a);
            sb.insert(b);
        }
        suf[i - 1] = now - (pres[n] - pres[i - 2] - now);
        //cout << i - 1 << " " << suf[i - 1] << "\n";
    }
    ll ans = 0;
    if(n & 1){
        for(int i = 1; i <= n; i += 2){
            ans = max(ans, pre[i - 1] + suf[i + 1]);
        }
    }
    else ans = pre[n];
    cout << ans << "\n";
}

Submission Info

Submission Time
Task A - Adjacent Delete
User pacybwoah
Language C++ 17 (gcc 12.2)
Score 700
Code Size 2507 Byte
Status AC
Exec Time 187 ms
Memory 26644 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 700 / 700
Status
AC × 3
AC × 52
Set Name Test Cases
Sample example_00.txt, example_01.txt, example_02.txt
All example_00.txt, example_01.txt, example_02.txt, test_00.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt
Case Name Status Exec Time Memory
example_00.txt AC 1 ms 3536 KiB
example_01.txt AC 1 ms 3460 KiB
example_02.txt AC 1 ms 3472 KiB
test_00.txt AC 185 ms 26644 KiB
test_01.txt AC 184 ms 26640 KiB
test_02.txt AC 184 ms 26540 KiB
test_03.txt AC 185 ms 26644 KiB
test_04.txt AC 185 ms 26568 KiB
test_05.txt AC 186 ms 26636 KiB
test_06.txt AC 184 ms 26568 KiB
test_07.txt AC 184 ms 26544 KiB
test_08.txt AC 185 ms 26544 KiB
test_09.txt AC 184 ms 26636 KiB
test_10.txt AC 187 ms 26476 KiB
test_11.txt AC 184 ms 26492 KiB
test_12.txt AC 185 ms 26472 KiB
test_13.txt AC 183 ms 26500 KiB
test_14.txt AC 185 ms 26544 KiB
test_15.txt AC 186 ms 26584 KiB
test_16.txt AC 185 ms 26584 KiB
test_17.txt AC 185 ms 26476 KiB
test_18.txt AC 184 ms 26564 KiB
test_19.txt AC 186 ms 26480 KiB
test_20.txt AC 145 ms 22360 KiB
test_21.txt AC 131 ms 20564 KiB
test_22.txt AC 58 ms 12156 KiB
test_23.txt AC 185 ms 25988 KiB
test_24.txt AC 151 ms 22836 KiB
test_25.txt AC 100 ms 17248 KiB
test_26.txt AC 52 ms 11172 KiB
test_27.txt AC 67 ms 13432 KiB
test_28.txt AC 175 ms 25160 KiB
test_29.txt AC 28 ms 7740 KiB
test_30.txt AC 45 ms 10124 KiB
test_31.txt AC 64 ms 12800 KiB
test_32.txt AC 3 ms 3988 KiB
test_33.txt AC 126 ms 19928 KiB
test_34.txt AC 127 ms 20424 KiB
test_35.txt AC 30 ms 8276 KiB
test_36.txt AC 92 ms 16452 KiB
test_37.txt AC 10 ms 4924 KiB
test_38.txt AC 67 ms 13300 KiB
test_39.txt AC 99 ms 16868 KiB
test_40.txt AC 120 ms 26544 KiB
test_41.txt AC 118 ms 26536 KiB
test_42.txt AC 121 ms 26540 KiB
test_43.txt AC 119 ms 26544 KiB
test_44.txt AC 129 ms 26580 KiB
test_45.txt AC 130 ms 26640 KiB
test_46.txt AC 124 ms 26640 KiB
test_47.txt AC 123 ms 26496 KiB
test_48.txt AC 127 ms 26528 KiB