# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
608982 | 2022-07-27T11:35:35 Z | DeMen100ns | Monster Game (JOI21_monster) | C++17 | 0 ms | 0 KB |
/* Author : DeMen100ns (a.k.a Vo Khac Trieu) School : VNU-HCM High school for the Gifted fuck you adhoc */ #include <monster.h> #include <bits/stdc++.h> using namespace std; namespace { }; int check(int id, int n){ int ct = 0; for(int i = 0; i < n; ++i){ if (id == i) continue; ct += Query(id, i); } return ct; } std::vector<int> Solve(int n) { std::vector<int> v; v.push_back(0); for(int i = 1; i < n; ++i){ int l = -1; r = v.size(); if (l + 1 < r){ int mid = (l + r) >> 1; if (Query(i, v[mid])){ l = mid; } else r = mid; } v.insert(v.begin() + i, l); } int ct = 0; for(int i = 0; i < n; ++i){ if (check(i) == n - 2){ swap(v[ct], v[i]); ++ct; } if (ct == 2) break; } if (!Query(v[0], v[1])) swap(v[0], v[1]); for(int i = 1; i < n - 1; ++i){ for(int j = i + 1; j < n; ++j){ if (!Query(i, j)){ swap(v[i + 1], v[j]); break; } } } return v; }