#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 time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |