結果

問題 No.1701 half price
ユーザー takumattakumat
提出日時 2021-10-08 22:24:58
言語 C++17
(gcc 12.3.0 + boost 1.83.0)
結果
WA  
実行時間 -
コード長 1,259 bytes
コンパイル時間 4,343 ms
コンパイル使用メモリ 263,032 KB
実行使用メモリ 6,948 KB
最終ジャッジ日時 2024-07-23 04:57:33
合計ジャッジ時間 5,188 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
5,248 KB
testcase_01 AC 2 ms
5,376 KB
testcase_02 WA -
testcase_03 WA -
testcase_04 WA -
testcase_05 AC 2 ms
5,376 KB
testcase_06 WA -
testcase_07 WA -
testcase_08 AC 2 ms
5,376 KB
testcase_09 AC 2 ms
5,376 KB
testcase_10 AC 2 ms
5,376 KB
testcase_11 WA -
testcase_12 WA -
testcase_13 WA -
testcase_14 AC 2 ms
5,376 KB
testcase_15 AC 2 ms
5,376 KB
testcase_16 AC 2 ms
5,376 KB
testcase_17 AC 3 ms
5,376 KB
testcase_18 AC 2 ms
5,376 KB
testcase_19 AC 2 ms
5,376 KB
testcase_20 AC 1 ms
5,376 KB
testcase_21 AC 4 ms
5,376 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
#include <atcoder/all>

typedef unsigned long long ULLONG;
typedef long long LLONG;
static const LLONG MOD_NUM = 998244353LL;//1000000007LL;
static const LLONG INF_NUM = MOD_NUM * 20LL;
template<class _T> static void get(_T& a) {
	std::cin >> a;
}
template<class _T> static void get(_T& a, _T& b) {
	std::cin >> a >> b;
}
template<class _T> static void get(_T& a, _T& b, _T& c) {
	std::cin >> a >> b >> c;
}
template <class _T> static _T tp_abs(_T a) {
	if (a < (_T)0) {
		a *= (_T)-1;
	}
	return a;
}

static void task();

int main()
{
	task();
	fflush(stdout);
	return 0;
}

static void task()
{
	int N;
	LLONG W;
	get(N);
	get(W);

	std::vector<LLONG> ai(N);
	for (int i = 0; i < N; i++) {
		get(ai[i]);
	}

	LLONG ans = 0;
	for (int select = 1; select < (1 << N); select++) {
		std::vector<LLONG> vi;
		for (int bit = 0; bit < N; bit++) {
			if (select & (1 << bit)) {
				vi.push_back(ai[bit]);
			}
		}

		int cnt = vi.size();
		for (int i = 0; i <= cnt; i++) {
			LLONG ttl = 0;
			bool pass = false;
			for (int j = 0; j < cnt; j++) {
				if (j == i) {
					if (vi[j] == 0) pass = true;
					ttl += vi[j] / 2LL;
				}
				else {
					ttl += vi[j];
				}
			}
			if (ttl == W && !pass) ans++;
		}
	}
	printf("%lld\n", ans);
}
0