#include "monster.h"
#include <iostream>
namespace {
bool example_variable;
}
void merge_sort(std::vector<int>& v, int l, int r) {
if (r - l <= 1) return;
int mid = (l + r) / 2;
merge_sort(v, l, mid);
merge_sort(v, mid, r);
std::vector<int> result;
result.reserve(r - l);
int i = l, j = mid;
while (i < mid && j < r) {
bool fight = Query(v[i], v[j]);
if (fight) {
result.push_back(v[j]);
j++;
} else {
result.push_back(v[i]);
i++;
}
}
while (i < mid) {
result.push_back(v[i]);
i++;
}
while (j < r) {
result.push_back(v[j]);
j++;
}
for (int k = l; k < r; ++k) {
v[k] = result[k - l];
}
}
std::vector<int> Solve(int N) {
std::vector<int> T(N);
std::vector<int> cisla(N);
for (int i = 0; i < N; i++){
cisla[i] = i;
}
merge_sort(cisla, 0, N);
for (int i = 0; i < N; i++){
T[cisla[i]] = i;
}
/*/for (int i = 0; i < N; i++){std::cout << T[i] << " ";}
std::cout << "\n";
for (int i = 0; i < N; i++){std::cout << cisla[i] << " ";}
std::cout << "\n";/*/
bool XY = Query(cisla[0], cisla[1]);
if (XY == false){
std::swap(cisla[0], cisla[1]);
}
for (int i = 1; i + 1 < N; i++){
bool XY = Query(cisla[i-1], cisla[i+1]);
if (XY == true) {
std::swap(cisla[i], cisla[i+1]);
}
}
XY = Query(cisla[N-2], cisla[N-1]);
if (XY == false){
std::swap(cisla[N-2], cisla[N-1]);
}
for (int i = 0; i < N; i++){
T[cisla[i]] = i;
}
/*/for (int i = 0; i < N; i++){std::cout << T[i] << " ";}
std::cout << "\n";
for (int i = 0; i < N; i++){std::cout << cisla[i] << " ";}
std::cout << "\n";/*/
return T;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |