#include "swaps.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define fastIO cin.tie(0); ios::sync_with_stdio(false)
#define cerr if(0) cout
vector<int> a;
int n;
void interact(int i, int j) {
if(i >= n || j >= n) return;
schedule(i+1, j+1);
}
int lg2(int n) {
int res = 0;
while(n != 1) {n>>=1; res++;}
return res;
}
void solve(int N, int v) {
n = N;
int betN = 1<<lg2(n);
if(betN < n) betN *= 2;
a = vector<int>(n);
for(int i = 0; i < n; i++) a[i] = i+1;
for(int i = 1; i < betN; i <<= 1) { // block size
cerr << i << '\n';
// across
cerr << "across\n";
for(int j = 0; j*i*2 < n; j += 1) {
for(int k = 0; k < i && k + j*i*2 < n; k++) {
interact(j*i*2 + i - k - 1, k + j*i*2 + i);
}
}
visit();
// fix subs
if(i != 1) {
cerr << "fix subs\n";
for(int j = 1; j <= i; j <<= 1) { // gap size
cerr << j << '\n';
cerr << "fix miniacross\n";
for(int k = 0; k*j*2 < n; k += 1) { // gap jumps
for(int l = 0; l < j && l + k*j*2 < n; l++) { // blocks
interact(k*j*2 + j - l - 1, l + k*j*2 + j);
}
}
visit();
}
}
}
answer(a);
}
# | 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... |