結果
| 問題 | No.3562 Communicate Sorted Vector |
| コンテスト | |
| ユーザー |
jastaway
|
| 提出日時 | 2026-05-27 01:09:25 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
AC
|
| 実行時間 | 144 ms / 2,000 ms |
| コード長 | 1,155 bytes |
| 記録 | |
| コンパイル時間 | 263 ms |
| コンパイル使用メモリ | 85,480 KB |
| 実行使用メモリ | 72,736 KB |
| 平均クエリ数 | 3.00 |
| 最終ジャッジ日時 | 2026-05-29 18:47:05 |
| 合計ジャッジ時間 | 31,365 ms |
|
ジャッジサーバーID (参考情報) |
judge3_1 / judge1_0 |
| 純コード判定待ち |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| 部分点1 | 10 % | AC * 45 |
| 部分点2 | 25 % | AC * 45 |
| 部分点3 | 65 % | AC * 46 |
| 合計 | 100 点 |
ソースコード
import sys
def solve():
# 入力をすべて取得
player = input()
N, Q = map(int, input().split())
if player == "Alice":
# Aliceパート: 数列Aを読み込む
A = list(map(int, input().split()))
# 差分を計算
D = []
prev = 0
for a in A:
D.append(a - prev)
prev = a
# 差分を2進数文字列に変換 (先頭の '0b' は除く)
S = [bin(d+1)[3:] for (d) in D]
# 出力 (K と 各文字列)
print(len(S), flush=True)
for s in S:
print(s, flush=True)
elif player == "Bob":
# Bobパート: Aliceからの出力を読み込む
K = int(input())
S = [input() for i in range(K)]
# 2進数から差分を復元し、累積和をとってAを復元
A = []
curr = 0
for s in S:
s = "1"+s
d = int(s, 2)-1
curr += d
A.append(curr)
# 復元した配列を出力
print(*(A), flush=True)
if __name__ == '__main__':
solve()
jastaway