提出 #4398396


ソースコード 拡げる

#include <bits/stdc++.h>
using namespace std;

using VS = vector<string>;    using LL = long long;
using VI = vector<int>;       using VVI = vector<VI>;
using PII = pair<int, int>;   using PLL = pair<LL, LL>;
using VL = vector<LL>;        using VVL = vector<VL>;

#define ALL(a)  begin((a)),end((a))
#define RALL(a) (a).rbegin(), (a).rend()
#define SZ(a) int((a).size())
#define SORT(c) sort(ALL((c)))
#define RSORT(c) sort(RALL((c)))
#define UNIQ(c) (c).erase(unique(ALL((c))), end((c)))
#define FOR(i, s, e) for (int(i) = (s); (i) < (e); (i)++)
#define FORR(i, s, e) for (int(i) = (s); (i) > (e); (i)--)
//#pragma GCC optimize ("-O3") 
#ifdef YANG33
#include "mydebug.hpp"
#else
#define DD(x) 
#endif
const int INF = 1e9;                          const LL LINF = 1e16;
const LL MOD = 1000000007;                    const double PI = acos(-1.0);
int DX[8] = { 0, 0, 1, -1, 1, 1, -1, -1 };    int DY[8] = { 1, -1, 0, 0, 1, -1, 1, -1 };

/* -----  2019/02/27  Problem: ABC 115 D / Link: http://abc115.contest.atcoder.jp/tasks/abc115_d  ----- */
/* ------問題------



-----問題ここまで----- */
/* -----解説等-----



----解説ここまで---- */

LL ans = 0LL;

int main() {
	cin.tie(0);
	ios_base::sync_with_stdio(false);

	VL lsum(100);
	VL lPsum(100);
	lsum[0] = 1;
	lPsum[0] = 1;
	FOR(i, 1, 51) {
		lsum[i] = 1 + lsum[i - 1] + 1 + lsum[i - 1] + 1;
		lPsum[i] = 0 + lPsum[i - 1] + 1 + lPsum[i - 1] + 0;
	}
	LL N, X; cin >> N >> X;
	function<LL(int, LL&)> dfs = [&](int LV, LL &leftX) {
		LL Pcnt = 0;
		if (leftX > 0) {// B
			leftX--;
		}
		if (leftX > 0) { // block
			if (leftX >= lsum[LV-1]) {
				Pcnt += lPsum[LV-1];
				leftX -= lsum[LV-1];
			}
			else {
				Pcnt += dfs(LV - 1, leftX);
			}
		}
		if (leftX > 0) { // P
			Pcnt++;
			leftX--;
		}
		if (leftX > 0) { // block
			if (leftX >= lsum[LV-1]) {
				Pcnt += lPsum[LV-1];
				leftX -= lsum[LV-1];
			}
			else {
				Pcnt += dfs(LV - 1, leftX);
			}
		}
		if (leftX > 0) {// B
			leftX--;
		}

		return Pcnt;
	};

	ans = dfs(N, X);
	cout << ans << "\n";

	return 0;
}

提出情報

提出日時
問題 D - Christmas
ユーザ Yang33
言語 C++14 (GCC 5.4.1)
得点 400
コード長 2139 Byte
結果 AC
実行時間 1 ms
メモリ 256 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 400 / 400
結果
AC × 3
AC × 16
セット名 テストケース
Sample a01, a02, a03
All a01, a02, a03, b04, b05, b06, b07, b08, b09, b10, b11, b12, b13, b14, b15, b16
ケース名 結果 実行時間 メモリ
a01 AC 1 ms 256 KiB
a02 AC 1 ms 256 KiB
a03 AC 1 ms 256 KiB
b04 AC 1 ms 256 KiB
b05 AC 1 ms 256 KiB
b06 AC 1 ms 256 KiB
b07 AC 1 ms 256 KiB
b08 AC 1 ms 256 KiB
b09 AC 1 ms 256 KiB
b10 AC 1 ms 256 KiB
b11 AC 1 ms 256 KiB
b12 AC 1 ms 256 KiB
b13 AC 1 ms 256 KiB
b14 AC 1 ms 256 KiB
b15 AC 1 ms 256 KiB
b16 AC 1 ms 256 KiB