Submission #1221779

#TimeUsernameProblemLanguageResultExecution timeMemory
1221779spetrMonster Game (JOI21_monster)C++20
0 / 100
22 ms420 KiB
#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";/*/

  for (int i = 0; i + 1 < N; i++){
    bool XY = Query(cisla[i], cisla[i+1]);

    if (XY  == false) {
        std::swap(cisla[i], cisla[i+1]);
        i++;
    }
  }
  


  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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...