/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 540.0 KiB
#2 Wrong Answer 20ms 540.0 KiB
#3 Wrong Answer 29ms 540.0 KiB

Code

#ifndef LOCAL
#include <bits/stdc++.h>
#define debug(...)
#endif

using namespace std;
#define int long long
#define sz(v) (int)(v).size()
#define cinv(v) for (auto &it:v) cin>>it;
#define coutv(v) for (auto &it:v) cout<< it<<' '; cout<<'\n';

template<typename T, T (*op)(T, T), T (*op2)(T, T)> struct SparseTable {
    vector<vector<T> > t, t2;

    SparseTable(const vector<T> &v): t(1, v), t2(1, v) {
        int K = __lg(sz(v)), N = sz(v);
        t.resize(K + 1, vector<T>(N));
        t2.resize(K + 1, vector<T>(N));
        for (int i = 1; i <= K; ++i)
            for (int j = 0; j + (1 << i) <= N; ++j) {
                t[i][j] = op(t[i - 1][j], t[i - 1][j + (1 << (i - 1))]);
                t2[i][j] = op2(t2[i - 1][j], t2[i - 1][j + (1 << (i - 1))]);
            }
    }

    T query(int L, int R, bool f) {
        assert(L<=R);
        int i = __lg(R - L + 1);
        return f ? op(t[i][L], t[i][R - (1 << i) + 1]) : op2(t2[i][L], t2[i][R - (1 << i) + 1]);
    }
};

int op(int a, int b) { return min(a, b); }
int op2(int a, int b) { return max(a, b); }

void shelby() {
    int n, k;
    cin >> n >> k;
    vector<int> v(n + 1);
    for (int i = 1; i <= n; ++i) cin >> v[i];
    SparseTable<int, op, op2> table(v);
    int ans = LLONG_MAX, now = 0;
    for (int i = 1; i <= k; ++i) now += v[i];
    ans = min(ans, now);
    ans = min(ans, now + (k + 1 > n ? LLONG_MAX : table.query(k + 1, n, true)) - table.query(1, k, false));
    debug(ans);
    for (int i = k + 1; i <= n; ++i) {
        now -= v[i - k] - v[i];
        debug(now, i);
        ans = min(ans, now);
        ans = min(ans, now + min(table.query(1, i - k, true), (i == n ? LLONG_MAX : table.query(i + 1, n, true))) - table.query(i - k + 1, i, false));
    }
    cout << ans << '\n';
}

signed main() {
    cin.tie(0)->sync_with_stdio(0);
    int t = 1;
    cin >> t;
    for (int _ = 1; _ <= t; ++_) {
        // cout << "Case " << _ << ": ";
        shelby();
    }
}

Information

Submit By
Type
Submission
Problem
P1149 Swap and Minimize
Language
C++17 (G++ 13.2.0)
Submit At
2025-01-26 10:05:46
Judged At
2025-01-26 10:05:46
Judged By
Score
1
Total Time
29ms
Peak Memory
540.0 KiB