Submission #544761

#TimeUsernameProblemLanguageResultExecution timeMemory
544761rainboyThe Collection Game (BOI21_swaps)C++14
100 / 100
12 ms416 KiB
#include "swaps.h"

using namespace std;

void solve(int n, int v) {
	vector<int> aa(n), ll(n), rr(n), lt;
	int m, h, i, j, l, l_, tmp;

	for (i = 0; i < n; i++)
		aa[i] = i + 1;
	for (l = 0; 1 << l < n; l++) {
		m = 1 << l + 1;
		for (i = 0; i < n; i++)
			if (i % m * 2 < m && (j = i - i % m * 2 + m - 1) < n)
				schedule(aa[i], aa[j]);
		lt = visit();
		for (i = 0, h = 0; i < n; i++)
			if (i % m * 2 < m && (j = i - i % m * 2 + m - 1) < n && !lt[h++])
				tmp = aa[i], aa[i] = aa[j], aa[j] = tmp;
		for (l_ = l - 1; l_ >= 0; l_--) {
			m = 1 << l_ + 1;
			for (i = 0; i < n; i++)
				if (i % m * 2 < m && (j = i + m / 2) < n)
					schedule(aa[i], aa[j]);
			lt = visit();
			for (i = 0, h = 0; i < n; i++)
				if (i % m * 2 < m && (j = i + m / 2) < n && !lt[h++])
					tmp = aa[i], aa[i] = aa[j], aa[j] = tmp;
		}
	}
	answer(aa);
}

Compilation message (stderr)

swaps.cpp: In function 'void solve(int, int)':
swaps.cpp:12:14: warning: suggest parentheses around '+' inside '<<' [-Wparentheses]
   12 |   m = 1 << l + 1;
      |            ~~^~~
swaps.cpp:21:16: warning: suggest parentheses around '+' inside '<<' [-Wparentheses]
   21 |    m = 1 << l_ + 1;
      |             ~~~^~~
#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...