Submission #1221718

#TimeUsernameProblemLanguageResultExecution timeMemory
1221718spetrMonster Game (JOI21_monster)C++20
0 / 100
688 ms1114112 KiB
#include "monster.h"

namespace {

bool example_variable;

}  // namespace

std::vector<int> merge_sort(std::vector<int> cisla){
    if (cisla.size() == 0){
        return {};
    }
    
    std::vector<int> a, b;
    int mid = cisla.size()/2;
    for (int i = 0; i < mid; i++){
        a.push_back(cisla[i]);
    }
    for (int i = mid; i < cisla.size(); i++){
        b.push_back(cisla[i]);
    }

    a = merge_sort(a);
    b = merge_sort(b);

    int i, j;
    std::vector<int> result;
    while (i < a.size() && j < b.size()){
        bool fight = Query(a[i], b[j]);

        if (fight){
            result.push_back(b[j]);
            j++;
        }
        else{
            result.push_back(a[i]);
            i++;
        }
    }
    while (i < a.size()){
        result.push_back(a[i]);
        i++;
    }
    while (j < b.size()){
        result.push_back(b[j]);
        j++;
    }

    return result;
}

std::vector<int> Solve(int N) {
  std::vector<int> T(N);

  std::vector<int> cisla;
  for (int i = 0; i < N; i++){
    cisla.push_back(i);
  }

  std::vector<int> serazeno = merge_sort(cisla);

  for (int i = 0; i < N-2; i++){
    bool XY = Query(serazeno[i], serazeno[i+1]);
    bool XZ = Query(serazeno[i], serazeno[i+2]);

    if (XZ == false){
        if (XY == false){
            int temp = serazeno[i];
            serazeno[i] = serazeno[i+1];
            serazeno[i+1] = temp;
        }
    }
    else{
        if (XY == true){
            int temp = serazeno[i];
            serazeno[i] = serazeno[i+1];
            serazeno[i+1] = temp;
        }
    }
  }

  for (int i = 0; i < N; i++){
    T[serazeno[i]] = i;
  }



  for (int i = 0; i < N; i++) T[i] = (N - 1) - i;

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