QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#140659#1133. Monster GameMohammed_Atalah#Judging//C++202.1kb2023-08-16 16:02:042023-08-16 18:34:19

Judging History

This is a historical verdict posted at 2023-08-16 18:34:19.

  • [2024-07-04 01:45:21]
  • 管理员手动重测本题所有提交记录
  • Verdict: 0
  • Time: 29ms
  • Memory: 4100kb
  • [2023-08-16 18:34:19]
  • 管理员手动重测本题所有提交记录
  • Verdict: Judging
  • Time: 44ms
  • Memory: 3784kb
  • [2023-08-16 16:02:07]
  • Judged
  • Verdict: 0
  • Time: 44ms
  • Memory: 3784kb
  • [2023-08-16 16:02:04]
  • Submitted

answer

#include "monster.h"
#include <bits/stdc++.h>
using namespace std;
namespace {

bool example_variable;

}  // namespace

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

  for (int i = 0 ; i < N ; i ++) {
    int win = 0;
    for (int j = 0; j < N; j ++) {
      if (i == j) continue;
      win += (Query(i, j) == 1);
    }
    // cout << i << " " << win << endl;
    if (win != 1 && win != N - 2) {
      order[win] = i;
    } else if (win == 1) {
      could_be_first.push_back(i);
    } else {
      could_be_last.push_back(i);
    }
  }

  if (N == 4) {

    if (Query(could_be_first[0], could_be_last[0])) {
      order[0] = could_be_first[1];
      order[1] = could_be_first[0];
      order[2] = could_be_last[0];
      order[3] = could_be_last[1];
    } else if (Query(could_be_first[0], could_be_last[1])) {
      order[0] = could_be_first[1];
      order[1] = could_be_first[0];
      order[2] = could_be_last[1];
      order[3] = could_be_last[0];
    } else if (Query(could_be_first[1], could_be_last[0])) {
      order[0] = could_be_first[0];
      order[1] = could_be_first[1];
      order[2] = could_be_last[0];
      order[3] = could_be_last[1];
    } else if (Query(could_be_first[1], could_be_last[1])) {
      order[0] = could_be_first[0];
      order[1] = could_be_first[1];
      order[2] = could_be_last[1];
      order[3] = could_be_last[0];
    }


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


  }









  if (Query(could_be_first[0], order[2])) {
    order[1] = could_be_first[0];
    order[0] = could_be_first[1];
  } else {
    order[1] = could_be_first[1];
    order[0] = could_be_first[0];
  }
  if (Query(order[N - 3], could_be_last[0])) {
    order[N - 2] = could_be_last[0];
    order[N - 1] = could_be_last[1];
  } else {
    order[N - 2] = could_be_last[1];
    order[N - 1] = could_be_last[0];
  }
  for (int i = 0; i < N ; i ++) {
    T[order[i]] = i;
  }
  return T;
}