#include <bits/stdc++.h>
#include "swaps.h"
using namespace std;
using vi = vector<int>;
using pi = pair<int,int>;
int inc(int a, int b, int n) {
if(a+b == n-1) return n-1;
return (a+b)%(n-1);
}
void recSort(int n, vi &v) {
if(n == 1) return;
if(n == 2) {
schedule(v[0], v[1]);
vi tmp = visit();
return;
}
vi a,b;
for(int i=0; i<n; ++i) {
if(i<n/2) a.push_back(v[i]);
else b.push_back(v[i]);
}
recSort((int)a.size(), a);
recSort((int)b.size(), b);
int tmp = log2(n)+1;
for(int g=(1<<tmp); g>=1; g/=2) {
vector<bool>vis(n,0);
for(int j=0; j<n; ++j) {
int x = inc(j, g, n);
if(vis[x] or vis[j] or x == j) continue;
vis[x] = vis[j] = 1;
schedule(min(v[j],v[x]), max(v[j],v[x]));
}
vi tmp2 = visit();
vis.assign(n, 0);
for(int j=inc(0,g,n); j<n; ++j) {
int x = inc(j, g, n);
if(vis[x] or vis[j] or x == j) continue;
vis[x] = vis[j] = 1;
schedule(min(v[j],v[x]), max(v[j],v[x]));
}
for(int j=0; j<inc(0,g,n); ++j) {
int x = inc(j, g, n);
if(vis[x] or vis[j] or x == j) continue;
vis[x] = vis[j] = 1;
schedule(min(v[j],v[x]), max(v[j],v[x]));
}
tmp2 = visit();
}
}
void solve(int N, int V) {
vi v;
for(int i=1; i<=N; ++i) v.push_back(i);
recSort(N, v);
reverse(v.begin(), v.end());
answer(v);
}
| # | 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... |
| # | 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... |