Submission #1216269

#TimeUsernameProblemLanguageResultExecution timeMemory
1216269jasonicThe Collection Game (BOI21_swaps)C++20
0 / 100
0 ms408 KiB
#include "swaps.h"
#include<bits/stdc++.h>
using namespace std;

template<typename T>
using vec = vector<T>;
using ll = long long;
using vll = vec<ll>;
using pll = pair<ll,ll>;
#define pb push_back;
#define dbg(x) if(1) cerr << #x << ": " << x << endl;

int n;
void sched(int a, int b) {
    if(a >= n or b >= n) return;
    a++;b++;
    schedule(a,b);
}

void solve(int N, int V) {
    n = N;
    int nPow = ceil(log2(N));
    int nPad = 1<<nPow;

    for(int i = 1; i <= nPow; i++) {
        // dbg(i);
        int blkSize = (1<<i);
        // query(1, n-k+1) for all the blocks
        
        for(int j = 0; j < N; j += blkSize) {
            for(int k = 0; k < blkSize/2; k++) {
                // dbg(j);
                // dbg(k);
                sched(j+k, j+blkSize-k-1);
            }
        }

        visit();

        if(i > 1) {
            for(int k = blkSize/2; k > 1; k /= 2) {
                for(int j = 0; j < N; j += 2*k) {
                    for(int l = 0; l < k; l++) {
                            // cerr << k << " " << j << " " << l << endl;
                            sched(j+l,j+k+l);
                        }
                    }
                visit();
            }
          }


    }


    vec<int> ans(N);
    iota(ans.begin(),ans.end(),1);
    answer(ans);
}

/*

16 100
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...