提出 #11028868


ソースコード 拡げる

#pragma GCC target ("avx")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#pragma warning (disable:4996)
#include"bits/stdc++.h"
#define int long long
#define MRE assert(0);
#define rep(i,n) for(int i=0;i<n;i++)
using namespace std;
const long long mod = 1000000007;
const long long inf = 1e17;
typedef pair<int, int> P;
int in[200];
vector<int>G[200];

int popcnt(int a) {
	int res = 0;
	rep(i, 55) {
		if (a&(1ll << i))res++;
	}
	return res;
}

signed main() {
	vector<P>V;
	rep(i, 55) {
		V.push_back(P((1ll << i) - 1, i));
	}
	int n; cin >> n; int N = n;
	int cst = 0, flg = 0;
	for (int i = 54; i >= 0; i--) {
		if (n >= V[i].first) {
			n -= V[i].first;
			cst = V[i].second;
			break;
		}
	}
	int S = cst + popcnt(n);

	rep(i, S - 1) {
		G[i].push_back(i + 1);
		G[S + i].push_back(S + i + 1);
	}
	rep(i, cst) {
		G[i].push_back(S);
	}
	for (int i = 54; i >= 0; i--) {
		if (n >= (1ll << i)) {
			G[cst].push_back(cst + S - i);
			cst++;
			n -= (1ll << i);
		}
	}
	
	rep(i, 2 * S) {
		for (int e : G[i])in[e]++;
	}
	priority_queue<int>Q;
	rep(i, 2 * S)if (!in[i])Q.push(i);
	vector<int>V2;
	while (Q.size()) {
		int p = Q.top(); Q.pop();
		V2.push_back(p);
		for (int e : G[p]) {
			in[e]--;
			if (!in[e]) {
				Q.push(e);
			}
		}
	}
	rep(i, V2.size()) {
		V2[i] = V2[i] % S + 1;
	}
	cout << S + S << endl;
	rep(i, V2.size()) {
		if (i)cout << ' ';
		cout << V2[i];
	}cout << endl;
}

提出情報

提出日時
問題 C - Tautonym Puzzle
ユーザ Rho17
言語 C++14 (GCC 5.4.1)
得点 1000
コード長 1488 Byte
結果 AC
実行時間 1 ms
メモリ 256 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 1000 / 1000
結果
AC × 2
AC × 32
セット名 テストケース
Sample 00_example_01.txt, 00_example_02.txt
All 00_example_01.txt, 00_example_02.txt, 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt
ケース名 結果 実行時間 メモリ
00_example_01.txt AC 1 ms 256 KiB
00_example_02.txt AC 1 ms 256 KiB
01.txt AC 1 ms 256 KiB
02.txt AC 1 ms 256 KiB
03.txt AC 1 ms 256 KiB
04.txt AC 1 ms 256 KiB
05.txt AC 1 ms 256 KiB
06.txt AC 1 ms 256 KiB
07.txt AC 1 ms 256 KiB
08.txt AC 1 ms 256 KiB
09.txt AC 1 ms 256 KiB
10.txt AC 1 ms 256 KiB
11.txt AC 1 ms 256 KiB
12.txt AC 1 ms 256 KiB
13.txt AC 1 ms 256 KiB
14.txt AC 1 ms 256 KiB
15.txt AC 1 ms 256 KiB
16.txt AC 1 ms 256 KiB
17.txt AC 1 ms 256 KiB
18.txt AC 1 ms 256 KiB
19.txt AC 1 ms 256 KiB
20.txt AC 1 ms 256 KiB
21.txt AC 1 ms 256 KiB
22.txt AC 1 ms 256 KiB
23.txt AC 1 ms 256 KiB
24.txt AC 1 ms 256 KiB
25.txt AC 1 ms 256 KiB
26.txt AC 1 ms 256 KiB
27.txt AC 1 ms 256 KiB
28.txt AC 1 ms 256 KiB
29.txt AC 1 ms 256 KiB
30.txt AC 1 ms 256 KiB