Submission #1195843


Source Code Expand

Copy
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <utility>
#include <string>

using namespace std;

using VL = vector<long long>;
using VVL = vector<vector<long long>>;

const int max_c = 50;

VVL calc_comb() {
	VVL comb(max_c + 1, VL(max_c + 1, 0));

	comb[1][0] = comb[1][1] = 1;
	for (int i = 1; i < max_c; i++) {
		// printf("%2d: ", i);
		for (int j = 0; j <= i; j++) {
			comb[i + 1][j]     += comb[i][j];
			comb[i + 1][j + 1] += comb[i][j];
			// printf("%5lld ", comb[i][j]);
		}
		// printf("\n");
	}

	return comb;
}


int main() {
	long long n;
	cin >> n;

	auto comb = calc_comb();

	VL scores(max_c + 1, 0);

	for (int i = 0; i <= max_c; i++) {
		for (int j = 2; j <= i; j += 2) {
			scores[i] += comb[i][j];
		}

		// printf("%2d: %20lld\n", i, scores[i]);
	}



	vector<int> nums;

	int idx = scores.size() - 1;
	while (n > 0) {
		if (n >= scores[idx]) {
			nums.emplace_back(idx);
			n -= scores[idx];
		} else {
			idx--;
		}
	}

	// for (auto e: nums) {
	// 	cout << e << endl;
	// }

	VL ans;
	for (int i = 0; i < nums.size(); i++) {
		for (int j = 0; j < nums[i]; j++) {
			ans.emplace_back(i + 1);
		}
	}

	cout << ans.size() << endl;
	for (int i = 0; i < ans.size(); i++) {
		if (i != 0) {
			cout << " ";
		}
		cout << ans[i];
	}
	cout << endl;

	return 0;
}

Submission Info

Submission Time
Task C - Tautonym Puzzle
User masafumi
Language C++14 (GCC 5.4.1)
Score 0
Code Size 1404 Byte
Status
Exec Time 1 ms
Memory 256 KB

Test Cases

Set Name Score / Max Score Test Cases
Sample 0 / 0 00_example_01.txt, 00_example_02.txt
All 0 / 1000 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
Case Name Status Exec Time Memory
00_example_01.txt 1 ms 256 KB
00_example_02.txt 1 ms 256 KB
01.txt 1 ms 256 KB
02.txt 1 ms 256 KB
03.txt 1 ms 256 KB
04.txt 1 ms 256 KB
05.txt 1 ms 256 KB
06.txt 1 ms 256 KB
07.txt 1 ms 256 KB
08.txt 1 ms 256 KB
09.txt 1 ms 256 KB
10.txt 1 ms 256 KB
11.txt 1 ms 256 KB
12.txt 1 ms 256 KB
13.txt 1 ms 256 KB
14.txt 1 ms 256 KB
15.txt 1 ms 256 KB
16.txt 1 ms 256 KB
17.txt 1 ms 256 KB
18.txt 1 ms 256 KB
19.txt 1 ms 256 KB
20.txt 1 ms 256 KB
21.txt 1 ms 256 KB
22.txt 1 ms 256 KB
23.txt 1 ms 256 KB
24.txt 1 ms 256 KB
25.txt 1 ms 256 KB
26.txt 1 ms 256 KB
27.txt 1 ms 256 KB
28.txt 1 ms 256 KB
29.txt 1 ms 256 KB
30.txt 1 ms 256 KB