/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 2ms 328.0 KiB
#2 Accepted 29ms 596.0 KiB
#3 Accepted 55ms 540.0 KiB
#4 Accepted 64ms 568.0 KiB
#5 Accepted 82ms 788.0 KiB
#6 Accepted 124ms 1.66 MiB
#7 Accepted 63ms 5.848 MiB
#8 Accepted 142ms 6.105 MiB
#9 Accepted 261ms 5.898 MiB
#10 Accepted 184ms 5.906 MiB
#11 Accepted 283ms 5.766 MiB
#12 Accepted 270ms 5.906 MiB

Code

#include <bits/stdc++.h>
using namespace std;

typedef int64_t ll;

#ifdef LOCAL
#include "debug.hpp"
#else
#define debug(...) 42
#endif

const ll N = 1e5 + 9;
ll a[N];

int32_t main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    ll T;
    cin >> T;
    while (T--)
    {
        ll n, k;
        cin >> n >> k;
        for (ll i = 1 ; i <= n ; i++) {
            cin >> a[i];
        }
        multiset<ll> st1, st2;
        ll l = 1, r = k;
        ll s = 0;
        for (ll i = 1 ; i <= k ; i++) {
            st1.insert(a[i]);
            s += a[i];
        }
        if (n == k) {
            cout << s << '\n';
            continue;
        }
        for (ll i = k + 1 ; i <= n ; i++) {
            st2.insert(a[i]);
        }
        ll res = 1e16;
        while (r <= n) {
            res = min({res, s - *st1.rbegin() + *st2.begin(), s});
            if (r == n)
                break;
            st1.erase(st1.find(a[l]));
            st2.insert(a[l]);
            st1.insert(a[r + 1]);
            st2.erase(st2.find(a[r + 1]));
            s = s - a[l] + a[r + 1];
            l += 1, r += 1;
        }
        cout << res << '\n';
    }
}

Information

Submit By
Type
Submission
Problem
P1149 Swap and Minimize
Language
C++17 (G++ 13.2.0)
Submit At
2024-12-12 11:52:36
Judged At
2024-12-12 11:52:36
Judged By
Score
100
Total Time
283ms
Peak Memory
6.105 MiB