提出 #53763650


ソースコード 拡げる

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

#define rep(i, x) for (int i = 0; i < (x); i++)

void generateSubarraySums(vector<ll> &arr, vector<ll> &result)
{
  int n = arr.size();
  int totalSubsets = 1 << n; // 2^n個の部分集合
  for (int mask = 0; mask < totalSubsets; mask++)
  {
    ll sum = 0;
    for (int i = 0; i < n; i++)
    {
      if (mask & (1 << i))
      {
        sum += arr[i];
      }
    }
    result.push_back(sum);
  }
}

int main()
{
  int N, K;
  cin >> N >> K;
  vector<ll> A(N);
  rep(i, N) cin >> A[i];

  // 配列を二分割
  vector<ll> firstHalf(A.begin(), A.begin() + N / 2);
  vector<ll> secondHalf(A.begin() + N / 2, A.end());

  vector<ll> firstHalfSums, secondHalfSums;
  generateSubarraySums(firstHalf, firstHalfSums);
  generateSubarraySums(secondHalf, secondHalfSums);

  // secondHalfSumsをソート
  sort(secondHalfSums.begin(), secondHalfSums.end());

  string ans = "No";
  for (ll sum : firstHalfSums)
  {
    if (binary_search(secondHalfSums.begin(), secondHalfSums.end(), K - sum))
    {
      ans = "Yes";
      break;
    }
  }

  cout << ans << endl;
  return 0;
}

提出情報

提出日時
問題 B14 - Another Subset Sum
ユーザ ryoh1004
言語 C++ 23 (gcc 12.2)
得点 1000
コード長 1146 Byte
結果 AC
実行時間 7 ms
メモリ 3824 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 1000 / 1000
結果
AC × 1
AC × 28
セット名 テストケース
Sample sample_01.txt
All 10_random_small_00.txt, 10_random_small_02.txt, 10_random_small_03.txt, 10_random_small_04.txt, 10_random_small_05.txt, 10_random_small_06.txt, 10_random_small_07.txt, 10_random_small_08.txt, 10_random_small_09.txt, 10_random_small_10.txt, 10_random_small_13.txt, 10_random_small_14.txt, 20_random_large_00.txt, 20_random_large_01.txt, 20_random_large_02.txt, 20_random_large_03.txt, 20_random_large_04.txt, 20_random_large_05.txt, 20_random_large_06.txt, 20_random_large_07.txt, 20_random_large_08.txt, 20_random_large_09.txt, 20_random_large_10.txt, 20_random_large_11.txt, 20_random_large_12.txt, 20_random_large_13.txt, 20_random_large_14.txt, sample_01.txt
ケース名 結果 実行時間 メモリ
10_random_small_00.txt AC 1 ms 3616 KiB
10_random_small_02.txt AC 1 ms 3680 KiB
10_random_small_03.txt AC 1 ms 3684 KiB
10_random_small_04.txt AC 1 ms 3540 KiB
10_random_small_05.txt AC 1 ms 3492 KiB
10_random_small_06.txt AC 1 ms 3472 KiB
10_random_small_07.txt AC 1 ms 3612 KiB
10_random_small_08.txt AC 1 ms 3448 KiB
10_random_small_09.txt AC 1 ms 3540 KiB
10_random_small_10.txt AC 1 ms 3612 KiB
10_random_small_13.txt AC 1 ms 3544 KiB
10_random_small_14.txt AC 1 ms 3540 KiB
20_random_large_00.txt AC 3 ms 3676 KiB
20_random_large_01.txt AC 7 ms 3736 KiB
20_random_large_02.txt AC 2 ms 3620 KiB
20_random_large_03.txt AC 3 ms 3664 KiB
20_random_large_04.txt AC 2 ms 3668 KiB
20_random_large_05.txt AC 7 ms 3824 KiB
20_random_large_06.txt AC 2 ms 3600 KiB
20_random_large_07.txt AC 3 ms 3600 KiB
20_random_large_08.txt AC 3 ms 3724 KiB
20_random_large_09.txt AC 5 ms 3744 KiB
20_random_large_10.txt AC 3 ms 3720 KiB
20_random_large_11.txt AC 4 ms 3732 KiB
20_random_large_12.txt AC 3 ms 3664 KiB
20_random_large_13.txt AC 7 ms 3720 KiB
20_random_large_14.txt AC 4 ms 3664 KiB
sample_01.txt AC 1 ms 3612 KiB