记录编号 605689 评测结果 AAAAAAAAAAAAAAAAAA
题目名称 4170.[USACO25 Open Silver]Sequence Construction 最终得分 100
用户昵称 GravatarLikableP 是否通过 通过
代码语言 C++ 运行时间 0.170 s
提交时间 2025-09-06 15:38:57 内存使用 3.85 MiB
显示代码纯文本
#include <cstdio>
#include <vector>
#define lowbit(x) (x & -x)

int T;
int M, K;
::std::vector<int> vec;

int main() {
  freopen("Sequence.in", "r", stdin);
  freopen("Sequence.out", "w", stdout);
  scanf("%d", &T);
  while (T--) {
    vec.clear();
    scanf("%d %d", &M, &K);
    for (int i = lowbit(K); K; K -= lowbit(K), i = lowbit(K)) {
      vec.push_back((1 << i) - 1);
      M -= (1 << i) - 1;
    }

    if (M < 0) {
      printf("-1\n");
      continue;
    }

    if (M & 1) {
      if (M == 1) {
        if (vec[0] == 1) {
          vec[0] = 2;
        } else {
          printf("-1\n");
          continue;
        }
      } else {
        vec.push_back(1);
        vec.push_back(2);
        M -= 3;
        vec.push_back(M / 2);
        vec.push_back(M / 2);
      }
    } else {
      vec.push_back(M / 2);
      vec.push_back(M / 2);
    }

    printf("%llu\n", vec.size());
    for (auto x : vec) {
      printf("%d ", x);
    }
    printf("\n");
  }
  return 0;
}