This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "fun.h"
#include <bits/stdc++.h>
using namespace std;
const int MaxN = 100005;
map<int, int> mem[MaxN];
int ask(int i, int j){
if (i > j) swap(i, j);
if (i == j) return 0;
if (mem[i].find(j) != mem[i].end()) return mem[i][j];
return mem[i][j] = hoursRequired(i, j);
}
vector<int> createFunTour(int N, int Q) {
int x = 0, y = 0;
for (int i = 0; i < N; i++){
for (int j = 0; j < N; j++){
if (ask(i, j) > ask(x, y)) x = i, y = j;
}
}
vector<int> p(N);
function<bool()> check = [&](){
vector<bool> used(N);
used[p[0]] = used[p[1]] = true;
for (int i = 1; i + 1 < N; i++){
int v = p[i];
for (int j = 0; j < N; j++){
if (!used[j] && ask(p[i], j) > ask(p[i], v) && ask(p[i], j) <= ask(p[i], p[i - 1])){
v = j;
}
}
if (v == p[i]) return false;
p[i + 1] = v;
used[v] = true;
}
return true;
};
p[0] = x, p[1] = y;
if (!check()){
swap(p[0], p[1]);
check();
}
return p;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |