| Task: | Lista |
| Sender: | zli0122 |
| Submission time: | 2026-01-18 16:16:23 +0200 |
| Language: | C++ (C++11) |
| Status: | READY |
| Result: | 100 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 7 |
| #2 | ACCEPTED | 9 |
| #3 | ACCEPTED | 12 |
| #4 | ACCEPTED | 18 |
| #5 | ACCEPTED | 23 |
| #6 | ACCEPTED | 31 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.00 s | 1, 3, 4, 5, 6 | details |
| #2 | ACCEPTED | 0.00 s | 1, 4, 5, 6 | details |
| #3 | ACCEPTED | 0.00 s | 1, 2, 4, 5, 6 | details |
| #4 | ACCEPTED | 0.00 s | 1, 2, 4, 5, 6 | details |
| #5 | ACCEPTED | 0.00 s | 1, 2, 4, 5, 6 | details |
| #6 | ACCEPTED | 0.00 s | 1, 3, 4, 5, 6 | details |
| #7 | ACCEPTED | 0.00 s | 1, 4, 5, 6 | details |
| #8 | ACCEPTED | 0.00 s | 1, 4, 5, 6 | details |
| #9 | ACCEPTED | 0.00 s | 1, 4, 5, 6 | details |
| #10 | ACCEPTED | 0.00 s | 1, 2, 4, 5, 6 | details |
| #11 | ACCEPTED | 0.00 s | 1, 4, 5, 6 | details |
| #12 | ACCEPTED | 0.00 s | 1, 4, 5, 6 | details |
| #13 | ACCEPTED | 0.00 s | 1, 4, 5, 6 | details |
| #14 | ACCEPTED | 0.11 s | 2, 6 | details |
| #15 | ACCEPTED | 0.12 s | 2, 6 | details |
| #16 | ACCEPTED | 0.14 s | 2, 6 | details |
| #17 | ACCEPTED | 0.26 s | 2, 6 | details |
| #18 | ACCEPTED | 0.15 s | 2, 6 | details |
| #19 | ACCEPTED | 0.15 s | 2, 6 | details |
| #20 | ACCEPTED | 0.00 s | 1, 3, 4, 5, 6 | details |
| #21 | ACCEPTED | 0.10 s | 3, 6 | details |
| #22 | ACCEPTED | 0.12 s | 3, 6 | details |
| #23 | ACCEPTED | 0.15 s | 3, 6 | details |
| #24 | ACCEPTED | 0.26 s | 3, 6 | details |
| #25 | ACCEPTED | 0.14 s | 3, 6 | details |
| #26 | ACCEPTED | 0.15 s | 3, 6 | details |
| #27 | ACCEPTED | 0.01 s | 4, 6 | details |
| #28 | ACCEPTED | 0.01 s | 4, 6 | details |
| #29 | ACCEPTED | 0.01 s | 4, 6 | details |
| #30 | ACCEPTED | 0.01 s | 2, 4, 6 | details |
| #31 | ACCEPTED | 0.01 s | 4, 6 | details |
| #32 | ACCEPTED | 0.01 s | 4, 6 | details |
| #33 | ACCEPTED | 0.07 s | 5, 6 | details |
| #34 | ACCEPTED | 0.08 s | 5, 6 | details |
| #35 | ACCEPTED | 0.06 s | 5, 6 | details |
| #36 | ACCEPTED | 0.06 s | 2, 5, 6 | details |
| #37 | ACCEPTED | 0.06 s | 5, 6 | details |
| #38 | ACCEPTED | 0.27 s | 6 | details |
| #39 | ACCEPTED | 0.31 s | 6 | details |
| #40 | ACCEPTED | 0.27 s | 6 | details |
| #41 | ACCEPTED | 0.06 s | 2, 5, 6 | details |
| #42 | ACCEPTED | 0.06 s | 5, 6 | details |
| #43 | ACCEPTED | 0.00 s | 1, 3, 4, 5, 6 | details |
| #44 | ACCEPTED | 0.00 s | 1, 2, 4, 5, 6 | details |
| #45 | ACCEPTED | 0.00 s | 1, 4, 5, 6 | details |
Code
#include <bits/stdc++.h>
namespace {
class FrequencyBalancer {
public:
FrequencyBalancer(const std::vector<int>& values) {
max_value_ = 0;
for (int v : values) {
max_value_ = std::max(max_value_, v);
}
remaining_.assign(max_value_ + 2, 0);
suffix_.assign(max_value_ + 2, 0);
for (int v : values) {
remaining_[v]++;
suffix_[v]++;
}
match_total_ = 0;
for (int v = 1; v <= max_value_; ++v) {
match_total_ += std::min(remaining_[v], suffix_[v]);
if (remaining_[v] > 0) {
tight_.insert(v);
}
}
}
int max_value() const { return max_value_; }
long long match_total() const { return match_total_; }
int remaining(int v) const { return remaining_[v]; }
int suffix(int v) const { return suffix_[v]; }
const std::set<int>& more_values() const { return more_; }
const std::set<int>& tight_values() const { return tight_; }
void consume_suffix(int v) {
if (v < 1 || v > max_value_) return;
update_match(v, 0, -1);
update_sets(v);
}
void consume_value(int v) {
if (v < 1 || v > max_value_) return;
update_match(v, -1, 0);
update_sets(v);
}
private:
void update_match(int v, int delta_remaining, int delta_suffix) {
match_total_ -= std::min(remaining_[v], suffix_[v]);
remaining_[v] += delta_remaining;
suffix_[v] += delta_suffix;
match_total_ += std::min(remaining_[v], suffix_[v]);
}
void update_sets(int v) {
if (v < 1 || v > max_value_) return;
more_.erase(v);
tight_.erase(v);
if (remaining_[v] == 0) {
return;
}
if (remaining_[v] > suffix_[v]) {
more_.insert(v);
} else {
tight_.insert(v);
}
}
int max_value_ = 0;
std::vector<int> remaining_;
std::vector<int> suffix_;
long long match_total_ = 0;
std::set<int> more_;
std::set<int> tight_;
};
int extra_cost(const FrequencyBalancer& balancer, int candidate, int original) {
if (candidate <= 0 || candidate > balancer.max_value() || balancer.remaining(candidate) == 0) {
return std::numeric_limits<int>::max();
}
int extra = (candidate == original) ? 0 : 1;
if (balancer.remaining(candidate) <= balancer.suffix(candidate)) {
extra += 1;
}
return extra;
}
void consider_candidate(const FrequencyBalancer& balancer, int candidate, int original, long long budget, int& best_choice) {
if (candidate <= 0 || candidate > balancer.max_value()) return;
if (balancer.remaining(candidate) == 0) return;
int cost = extra_cost(balancer, candidate, original);
if (cost <= budget) {
if (best_choice == -1 || candidate < best_choice) {
best_choice = candidate;
}
}
}
}
std::vector<int> minimal_lexicographic_list(const std::vector<int>& values, int k) {
int n = static_cast<int>(values.size());
if (n == 0) return {};
FrequencyBalancer balancer(values);
std::vector<int> result(n);
int used_mismatches = 0;
for (int i = 0; i < n; ++i) {
int current = values[i];
balancer.consume_suffix(current);
int remaining_positions = n - i - 1;
long long base_total = static_cast<long long>(used_mismatches) + remaining_positions - balancer.match_total();
long long budget = static_cast<long long>(k) - base_total;
if (budget < 0) {
budget = -1; // forces selection to respect impossibility, handled by logic below
}
int choice = -1;
consider_candidate(balancer, current, current, budget, choice);
if (!balancer.more_values().empty()) {
consider_candidate(balancer, *balancer.more_values().begin(), current, budget, choice);
}
if (!balancer.tight_values().empty()) {
consider_candidate(balancer, *balancer.tight_values().begin(), current, budget, choice);
}
if (choice == -1) {
choice = current; // fallback, should not happen but keeps behavior defined
}
result[i] = choice;
if (choice != current) {
++used_mismatches;
}
balancer.consume_value(choice);
}
return result;
}
#if !defined(TEST_BUILD)
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int n, k;
if (!(std::cin >> n >> k)) {
return 0;
}
std::vector<int> values(n);
for (int i = 0; i < n; ++i) {
std::cin >> values[i];
}
std::vector<int> answer = minimal_lexicographic_list(values, k);
for (int i = 0; i < n; ++i) {
if (i) std::cout << ' ';
std::cout << answer[i];
}
std::cout << '\n';
return 0;
}
#endif
Test details
Test 1 (public)
Group: 1, 3, 4, 5, 6
Verdict: ACCEPTED
| input |
|---|
| 6 3 6 5 1 4 1 3 |
| correct output |
|---|
| 1 5 1 4 3 6 |
| user output |
|---|
| 1 5 1 4 3 6 |
Test 2 (public)
Group: 1, 4, 5, 6
Verdict: ACCEPTED
| input |
|---|
| 4 4 1 2 3 4 |
| correct output |
|---|
| 1 2 3 4 |
| user output |
|---|
| 1 2 3 4 |
Test 3
Group: 1, 2, 4, 5, 6
Verdict: ACCEPTED
| input |
|---|
| 2 2 2 1 |
| correct output |
|---|
| 1 2 |
| user output |
|---|
| 1 2 |
Test 4
Group: 1, 2, 4, 5, 6
Verdict: ACCEPTED
| input |
|---|
| 10 2 6 6 6 6 6 6 6 6 6 6 |
| correct output |
|---|
| 6 6 6 6 6 6 6 6 6 6 |
| user output |
|---|
| 6 6 6 6 6 6 6 6 6 6 |
Test 5
Group: 1, 2, 4, 5, 6
Verdict: ACCEPTED
| input |
|---|
| 10 2 2 5 10 1 8 6 4 7 3 9 |
| correct output |
|---|
| 1 5 10 2 8 6 4 7 3 9 |
| user output |
|---|
| 1 5 10 2 8 6 4 7 3 9 |
Test 6
Group: 1, 3, 4, 5, 6
Verdict: ACCEPTED
| input |
|---|
| 10 3 6 9 2 7 5 4 9 9 10 8 |
| correct output |
|---|
| 2 6 9 7 5 4 9 9 10 8 |
| user output |
|---|
| 2 6 9 7 5 4 9 9 10 8 |
Test 7
Group: 1, 4, 5, 6
Verdict: ACCEPTED
| input |
|---|
| 10 4 3 4 2 9 5 1 5 6 10 8 |
| correct output |
|---|
| 1 2 3 9 5 4 5 6 10 8 |
| user output |
|---|
| 1 2 3 9 5 4 5 6 10 8 |
Test 8
Group: 1, 4, 5, 6
Verdict: ACCEPTED
| input |
|---|
| 10 7 8 10 6 4 5 3 1 9 2 9 |
| correct output |
|---|
| 1 2 3 4 5 6 8 9 9 10 |
| user output |
|---|
| 1 2 3 4 5 6 8 9 9 10 |
Test 9
Group: 1, 4, 5, 6
Verdict: ACCEPTED
| input |
|---|
| 10 10 8 5 7 7 6 9 5 1 3 4 |
| correct output |
|---|
| 1 3 4 5 5 6 7 7 8 9 |
| user output |
|---|
| 1 3 4 5 5 6 7 7 8 9 |
Test 10
Group: 1, 2, 4, 5, 6
Verdict: ACCEPTED
| input |
|---|
| 10 2 1 2 3 4 5 6 7 8 9 10 |
| correct output |
|---|
| 1 2 3 4 5 6 7 8 9 10 |
| user output |
|---|
| 1 2 3 4 5 6 7 8 9 10 |
Test 11
Group: 1, 4, 5, 6
Verdict: ACCEPTED
| input |
|---|
| 10 9 10 9 8 7 6 5 4 3 2 1 |
| correct output |
|---|
| 1 2 3 4 6 5 7 8 9 10 |
| user output |
|---|
| 1 2 3 4 6 5 7 8 9 10 |
Test 12
Group: 1, 4, 5, 6
Verdict: ACCEPTED
| input |
|---|
| 10 10 10 9 8 7 6 5 4 3 2 1 |
| correct output |
|---|
| 1 2 3 4 5 6 7 8 9 10 |
| user output |
|---|
| 1 2 3 4 5 6 7 8 9 10 |
Test 13
Group: 1, 4, 5, 6
Verdict: ACCEPTED
| input |
|---|
| 9 8 9 8 7 6 5 4 3 2 1 |
| correct output |
|---|
| 1 2 3 4 5 6 7 8 9 |
| user output |
|---|
| 1 2 3 4 5 6 7 8 9 |
Test 14
Group: 2, 6
Verdict: ACCEPTED
| input |
|---|
| 200000 2 176369 57172 92603 196271 1967... |
| correct output |
|---|
| 1155 57172 92603 196271 196768... |
| user output |
|---|
| 1155 57172 92603 196271 196768... |
Test 15
Group: 2, 6
Verdict: ACCEPTED
| input |
|---|
| 200000 2 188653 156245 40967 173336 185... |
| correct output |
|---|
| 57 156245 40967 173336 185896 ... |
| user output |
|---|
| 57 156245 40967 173336 185896 ... |
Test 16
Group: 2, 6
Verdict: ACCEPTED
| input |
|---|
| 200000 2 170455 14692 60230 38375 31037... |
| correct output |
|---|
| 20 14692 60230 38375 31037 395... |
| user output |
|---|
| 20 14692 60230 38375 31037 395... |
Test 17
Group: 2, 6
Verdict: ACCEPTED
| input |
|---|
| 200000 2 59289 119695 145821 16906 1149... |
| correct output |
|---|
| 1 119695 145821 16906 114932 1... |
| user output |
|---|
| 1 119695 145821 16906 114932 1... |
Test 18
Group: 2, 6
Verdict: ACCEPTED
| input |
|---|
| 200000 2 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
| correct output |
|---|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
| user output |
|---|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
Test 19
Group: 2, 6
Verdict: ACCEPTED
| input |
|---|
| 200000 2 200000 199999 199998 199997 19... |
| correct output |
|---|
| 1 199999 199998 199997 199996 ... |
| user output |
|---|
| 1 199999 199998 199997 199996 ... |
Test 20
Group: 1, 3, 4, 5, 6
Verdict: ACCEPTED
| input |
|---|
| 3 3 3 2 1 |
| correct output |
|---|
| 1 2 3 |
| user output |
|---|
| 1 2 3 |
Test 21
Group: 3, 6
Verdict: ACCEPTED
| input |
|---|
| 200000 3 66357 7587 176209 27489 170275... |
| correct output |
|---|
| 390 7587 66357 27489 170275 31... |
| user output |
|---|
| 390 7587 66357 27489 170275 31... |
Test 22
Group: 3, 6
Verdict: ACCEPTED
| input |
|---|
| 200000 3 93946 193045 25177 150263 1482... |
| correct output |
|---|
| 205 93946 25177 150263 148229 ... |
| user output |
|---|
| 205 93946 25177 150263 148229 ... |
Test 23
Group: 3, 6
Verdict: ACCEPTED
| input |
|---|
| 200000 3 81262 22620 25235 22620 10144 ... |
| correct output |
|---|
| 6 22620 25235 22620 10144 2614... |
| user output |
|---|
| 6 22620 25235 22620 10144 2614... |
Test 24
Group: 3, 6
Verdict: ACCEPTED
| input |
|---|
| 200000 3 62925 65929 74691 187894 13817... |
| correct output |
|---|
| 1 62925 74691 187894 138170 15... |
| user output |
|---|
| 1 62925 74691 187894 138170 15... |
Test 25
Group: 3, 6
Verdict: ACCEPTED
| input |
|---|
| 200000 3 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
| correct output |
|---|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
| user output |
|---|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
Test 26
Group: 3, 6
Verdict: ACCEPTED
| input |
|---|
| 200000 3 200000 199999 199998 199997 19... |
| correct output |
|---|
| 1 199999 199998 199997 199996 ... |
| user output |
|---|
| 1 199999 199998 199997 199996 ... |
Test 27
Group: 4, 6
Verdict: ACCEPTED
| input |
|---|
| 2000 100 1468 510 463 644 1429 1108 153... |
| correct output |
|---|
| 1 2 3 4 5 6 7 8 9 10 11 13 14 ... |
| user output |
|---|
| 1 2 3 4 5 6 7 8 9 10 11 13 14 ... |
Test 28
Group: 4, 6
Verdict: ACCEPTED
| input |
|---|
| 2000 1000 1246 1024 680 1448 504 921 976... |
| correct output |
|---|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
| user output |
|---|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
Test 29
Group: 4, 6
Verdict: ACCEPTED
| input |
|---|
| 2000 1900 461 1257 1198 1876 651 1930 15... |
| correct output |
|---|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
| user output |
|---|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
Test 30
Group: 2, 4, 6
Verdict: ACCEPTED
| input |
|---|
| 2000 2 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
| correct output |
|---|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
| user output |
|---|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
Test 31
Group: 4, 6
Verdict: ACCEPTED
| input |
|---|
| 2000 597 2000 1999 1998 1997 1996 1995 ... |
| correct output |
|---|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
| user output |
|---|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
Test 32
Group: 4, 6
Verdict: ACCEPTED
| input |
|---|
| 2000 2000 2000 1999 1998 1997 1996 1995 ... |
| correct output |
|---|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
| user output |
|---|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
Test 33
Group: 5, 6
Verdict: ACCEPTED
| input |
|---|
| 200000 100 8 4 2 6 7 2 9 2 10 9 4 1 1 3 1... |
| correct output |
|---|
| 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| user output |
|---|
| 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
Test 34
Group: 5, 6
Verdict: ACCEPTED
| input |
|---|
| 200000 10000 5 7 2 6 1 9 7 2 4 10 1 4 4 1 9... |
| correct output |
|---|
| 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| user output |
|---|
| 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
Test 35
Group: 5, 6
Verdict: ACCEPTED
| input |
|---|
| 200000 190000 8 3 5 5 7 8 10 10 8 10 2 2 2 8... |
| correct output |
|---|
| 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| user output |
|---|
| 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
Test 36
Group: 2, 5, 6
Verdict: ACCEPTED
| input |
|---|
| 200000 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| user output |
|---|
| 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
Test 37
Group: 5, 6
Verdict: ACCEPTED
| input |
|---|
| 200000 200000 10 10 10 10 10 10 10 10 10 10 ... |
| correct output |
|---|
| 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| user output |
|---|
| 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
Test 38
Group: 6
Verdict: ACCEPTED
| input |
|---|
| 200000 100 151203 41607 101924 180578 132... |
| correct output |
|---|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
| user output |
|---|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
Test 39
Group: 6
Verdict: ACCEPTED
| input |
|---|
| 200000 10000 172851 90759 102500 164610 200... |
| correct output |
|---|
| 1 2 3 4 5 6 7 8 8 9 10 11 11 1... |
| user output |
|---|
| 1 2 3 4 5 6 7 8 8 9 10 11 11 1... |
Test 40
Group: 6
Verdict: ACCEPTED
| input |
|---|
| 200000 190000 176771 53238 75539 184219 9404... |
| correct output |
|---|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
| user output |
|---|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
Test 41
Group: 2, 5, 6
Verdict: ACCEPTED
| input |
|---|
| 200000 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| user output |
|---|
| 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
Test 42
Group: 5, 6
Verdict: ACCEPTED
| input |
|---|
| 200000 200000 10 10 10 10 10 10 10 10 10 10 ... |
| correct output |
|---|
| 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| user output |
|---|
| 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
Test 43
Group: 1, 3, 4, 5, 6
Verdict: ACCEPTED
| input |
|---|
| 10 3 8 5 5 8 8 10 10 10 6 3 |
| correct output |
|---|
| 3 5 5 8 8 8 10 10 6 10 |
| user output |
|---|
| 3 5 5 8 8 8 10 10 6 10 |
Test 44
Group: 1, 2, 4, 5, 6
Verdict: ACCEPTED
| input |
|---|
| 10 2 1 1 2 5 2 7 1 2 4 2 |
| correct output |
|---|
| 1 1 1 5 2 7 2 2 4 2 |
| user output |
|---|
| 1 1 1 5 2 7 2 2 4 2 |
Test 45
Group: 1, 4, 5, 6
Verdict: ACCEPTED
| input |
|---|
| 10 4 1 1 2 5 2 7 1 2 4 2 |
| correct output |
|---|
| 1 1 1 2 2 5 7 2 4 2 |
| user output |
|---|
| 1 1 1 2 2 5 7 2 4 2 |
