#include <vector>
#include "art.h"
using namespace std;
int n;
int p;
vector < int > a;
vector < int > tmp;
vector < int > ans;
bool cmp(int x, int y)
{
vector < int > cur(n);
for(int i = 0; i < n; i++)
{
cur[i] = i + 1;
}
swap(cur[x - 1], cur[y - 1]);
int curp = publish(cur);
return curp >= p;
}
void mergeSort(int left, int right)
{
if(left == right)
return;
int mid = left + (right - left) / 2;
mergeSort(left, mid);
mergeSort(mid + 1, right);
for(int i = left; i <= right; i++)
{
tmp[i] = a[i];
}
int ptrl = left;
int ptrr = mid + 1;
int ptr = left;
while(ptrl <= mid && ptrr <= right)
{
if(cmp(tmp[ptrl], tmp[ptrr]))
{
a[ptr++] = tmp[ptrl++];
}
else
{
a[ptr++] = tmp[ptrr++];
}
}
while(ptrl <= mid)
a[ptr++] = tmp[ptrl++];
while(ptrr <= right)
a[ptr++] = tmp[ptrr++];
}
void solve(int N)
{
n = N;
a.resize(n);
tmp.resize(n);
ans.resize(n);
for(int i = 0; i < n; i++)
{
a[i] = i + 1;
}
p = publish(a);
mergeSort(0, n - 1);
for(int i = 0; i < n; i++)
{
ans[i] = a[i];
}
answer(ans);
}
| # | 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... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |