結果
| 問題 |
No.451 575
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-12-17 01:54:17 |
| 言語 | Python2 (2.7.18) |
| 結果 |
AC
|
| 実行時間 | 281 ms / 2,000 ms |
| コード長 | 1,264 bytes |
| コンパイル時間 | 492 ms |
| コンパイル使用メモリ | 7,040 KB |
| 実行使用メモリ | 13,696 KB |
| 最終ジャッジ日時 | 2024-12-17 13:23:44 |
| 合計ジャッジ時間 | 5,520 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 29 |
ソースコード
from Queue import * # Queue, LifoQueue, PriorityQueue
from bisect import * #bisect, insort
from collections import * #deque, Counter,OrderedDict,defaultdict
#set([])
import math
import copy
import itertools
import string
import sys
myread = lambda : map(int,raw_input().split())
def solver():
N = int(raw_input())
b = [int(raw_input()) for i in xrange(N)]
cur = 0
lu = [1,10**18]
for i in xrange(N):
if i % 4 == 0:
cur = b[i] - cur
lu[1] = min(cur - 1, lu[1])
lu[0] = max(cur - 10**18, lu[0])
elif i % 4 == 1:
cur = cur - b[i]
lu[1] = min(cur - 1, lu[1])
lu[0] = max(cur - 10**18, lu[0])
elif i % 4 == 2:
cur = b[i] - cur
lu[1] = min(10**18 - cur, lu[1])
lu[0] = max(1 - cur, lu[0])
else:
cur = cur - b[i]
lu[1] = min(10**18 - cur, lu[1])
lu[0] = max(1 - cur, lu[0])
if lu[0] > lu[1]:
print -1
return
a = [lu[0]]
for i in xrange(N):
if i % 2 == 0:
a.append(b[i] - a[-1])
else:
a.append(a[-1] - b[i])
print len(a)
for x in a:
print x
if __name__ == "__main__":
solver()