제출 #660110

#제출 시각아이디문제언어결과실행 시간메모리
660110ymmThe Collection Game (BOI21_swaps)C++17
35 / 100
37 ms464 KiB
#include "swaps.h"
#include <bits/stdc++.h>
#define Loop(x,l,r) for (ll x = (l); x < (ll)(r); ++x)
#define LoopR(x,l,r) for (ll x = (r)-1; x >= (ll)(l); --x)
typedef long long ll;
typedef std::pair<int, int> pii;
typedef std::pair<ll , ll > pll;
using namespace std;

const int LG = 10;
const int N = 1<<LG;
vector<int> ord;
vector<pii> sched;
int n;

vector<int> cmp()
{
	int cnt = 0;
	for (auto [i, j] : sched) {
		int x = ord[i];
		int y = ord[j];
		if (x > n || y > n)
			continue;
		schedule(x, y);
		++cnt;
	}
	vector<int> res = cnt? visit(): vector<int>(), ans;
	reverse(res.begin(), res.end());
	for (auto [i, j] : sched) {
		int x = ord[i];
		int y = ord[j];
		if (x > n || y > n) {
			ans.push_back(x < y);
		} else {
			ans.push_back(res.back());
			res.pop_back();
		}
	}
	return ans;
}

void Do(int sz)
{
	Loop (x,0,sz) {
		for (int l = 0; l < N; l += 2*sz) {
			int m = l + sz;
			int r = m + sz;
			Loop (i,l+x,m)
				sched.push_back({i, i+sz-x});
		}
		auto res = cmp();
		Loop (k,0,sched.size()) {
			int x = res[k];
			auto [i, j] = sched[k];
			if (!x)
				swap(ord[i], ord[j]);
		}
		sched.clear();
	}
}

void solve(int _n, int v)
{
	n = _n;
	ord.resize(N);
	iota(ord.begin(), ord.end(), 1);
	Loop (i,0,LG)
		Do(1<<i);
	ord.resize(n);
	answer(ord);
}

컴파일 시 표준 에러 (stderr) 메시지

swaps.cpp: In function 'void Do(int)':
swaps.cpp:47:8: warning: unused variable 'r' [-Wunused-variable]
   47 |    int r = m + sz;
      |        ^
#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...