#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) cerr
vector<int> a;
int n;
int visCalls = 0;
void interact(int i, int j) {
cerr << "COMPARE+SWAP " << i+1 << ' ' << j+1 << '\n';
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 fix(int sz) {
for(int i = 1; i < sz; i <<= 1) { // block size
// across
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();
if(i != 1) for(int j = i/2; j > 0; j >>= 1) {
for(int k = 0; k*j*2 < n; k++) {
for(int l = 0; l < j && l + k*j*2 < n; l++) {
interact(k*j*2 + l, k*j*2 + l + j);
}
}
visit();
}
cerr << '\n';
}
if(sz <= 1) return;
}
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;
fix(betN);
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... |