제출 #1207879

#제출 시각아이디문제언어결과실행 시간메모리
1207879jasonicThe Collection Game (BOI21_swaps)C++20
51 / 100
2 ms420 KiB
#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 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...