/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Wrong Answer 1ms 532.0 KiB
#2 Wrong Answer 17ms 580.0 KiB

Code

#include <iostream>
#include <vector>
#include <algorithm>
#include <climits>
using namespace std;

void solve() {
    int T;
    cin >> T;

    while (T--) {
        int N, K;
        cin >> N >> K;
        vector<int> A(N);

        for (int i = 0; i < N; ++i) {
            cin >> A[i];
        }

        // Sliding window to calculate the minimum sum of any subarray of length K
        long long currentSum = 0, minSum = LLONG_MAX;
        for (int i = 0; i < K; ++i) {
            currentSum += A[i];
        }
        minSum = currentSum;

        for (int i = K; i < N; ++i) {
            currentSum += A[i] - A[i - K];
            minSum = min(minSum, currentSum);
        }

        // Single swap optimization
        int minValue = *min_element(A.begin(), A.end());
        int maxValue = *max_element(A.begin(), A.end());

        for (int i = 0; i <= N - K; ++i) {
            long long subarraySum = 0;
            for (int j = 0; j < K; ++j) {
                subarraySum += A[i + j];
            }

            // Swap largest outside with smallest inside
            for (int j = 0; j < K; ++j) {
                long long newSum = subarraySum - A[i + j] + maxValue;
                minSum = min(minSum, newSum);
            }

            // Swap smallest outside with largest inside
            for (int j = 0; j < K; ++j) {
                long long newSum = subarraySum - A[i + j] + minValue;
                minSum = min(minSum, newSum);
            }
        }

        cout << minSum << '\n';
    }
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    solve();
    return 0;
}

Information

Submit By
Type
Submission
Problem
P1149 Swap and Minimize
Language
C++17 (G++ 13.2.0)
Submit At
2025-01-02 00:02:29
Judged At
2025-01-02 00:02:29
Judged By
Score
0
Total Time
17ms
Peak Memory
580.0 KiB