Submission #1302149

#TimeUsernameProblemLanguageResultExecution timeMemory
1302149itachi_godRope (JOI17_rope)C++20
0 / 100
0 ms332 KiB
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int N, M;
    if (!(cin >> N >> M)) return 0;

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

    // Counts for each set
    int size_A = 0, size_B = 0, size_Even = 0, size_Odd = 0;
    vector<int> cnt_A(M + 1, 0);
    vector<int> cnt_B(M + 1, 0);
    vector<int> cnt_Even(M + 1, 0);
    vector<int> cnt_Odd(M + 1, 0);

    for (int i = 0; i < N; ++i) {
        int color = C[i];
        
        // Even / Odd sets
        if (i % 2 == 0) {
            size_Even++;
            cnt_Even[color]++;
        } else {
            size_Odd++;
            cnt_Odd[color]++;
        }

        // Type A / Type B sets
        if (i % 4 == 0 || i % 4 == 1) {
            size_A++;
            cnt_A[color]++;
        } else {
            size_B++;
            cnt_B[color]++;
        }
    }

    for (int c = 1; c <= M; ++c) {
        int cost_A = size_A - cnt_A[c];
        int cost_B = size_B - cnt_B[c];
        int cost_Even = size_Even - cnt_Even[c];
        int cost_Odd = size_Odd - cnt_Odd[c];

        int min_cost = min({cost_A, cost_B, cost_Even, cost_Odd});
        cout << min_cost << "\n";
    }

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...