結果
問題 | No.2966 Simple Plus Minus Problem |
ユーザー | lif4635 |
提出日時 | 2024-11-16 17:25:53 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,796 bytes |
コンパイル時間 | 596 ms |
コンパイル使用メモリ | 82,008 KB |
実行使用メモリ | 113,444 KB |
最終ジャッジ日時 | 2024-11-16 17:27:14 |
合計ジャッジ時間 | 7,970 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 40 ms
54,400 KB |
testcase_01 | AC | 42 ms
54,272 KB |
testcase_02 | AC | 41 ms
54,272 KB |
testcase_03 | AC | 116 ms
99,840 KB |
testcase_04 | AC | 131 ms
106,292 KB |
testcase_05 | AC | 43 ms
54,016 KB |
testcase_06 | WA | - |
testcase_07 | WA | - |
testcase_08 | WA | - |
testcase_09 | WA | - |
testcase_10 | WA | - |
testcase_11 | WA | - |
testcase_12 | WA | - |
testcase_13 | WA | - |
testcase_14 | WA | - |
testcase_15 | WA | - |
testcase_16 | WA | - |
testcase_17 | WA | - |
testcase_18 | WA | - |
testcase_19 | WA | - |
testcase_20 | WA | - |
testcase_21 | WA | - |
testcase_22 | WA | - |
testcase_23 | WA | - |
testcase_24 | WA | - |
testcase_25 | WA | - |
testcase_26 | WA | - |
testcase_27 | WA | - |
testcase_28 | WA | - |
testcase_29 | WA | - |
testcase_30 | WA | - |
testcase_31 | WA | - |
testcase_32 | AC | 40 ms
54,144 KB |
testcase_33 | AC | 39 ms
54,016 KB |
testcase_34 | WA | - |
testcase_35 | WA | - |
testcase_36 | WA | - |
testcase_37 | WA | - |
testcase_38 | WA | - |
testcase_39 | WA | - |
testcase_40 | WA | - |
testcase_41 | WA | - |
testcase_42 | WA | - |
testcase_43 | WA | - |
testcase_44 | WA | - |
testcase_45 | WA | - |
testcase_46 | WA | - |
testcase_47 | WA | - |
testcase_48 | WA | - |
testcase_49 | WA | - |
testcase_50 | WA | - |
testcase_51 | WA | - |
testcase_52 | AC | 155 ms
113,444 KB |
testcase_53 | WA | - |
testcase_54 | WA | - |
testcase_55 | WA | - |
testcase_56 | WA | - |
ソースコード
"""input""" #int-input # input = sys.stdin.readline def II(): return int(input()) def MI(): return map(int, input().split()) def LI(): return list(MI()) #str-input def SI(): return input() def MSI(): return input().split() def SI_L(): return list(SI()) def SI_LI(): return list(map(int, SI())) #multiple-input def LLI(n): return [LI() for _ in range(n)] def LSI(n): return [SI() for _ in range(n)] #1-indexを0-indexでinput def MI_1(): return map(lambda x:int(x)-1, input().split()) def TI_1(): return tuple(MI_1()) def LI_1(): return list(MI_1()) from collections import deque,defaultdict,Counter mod = 998244353 class fenwick_tree(): n=1 data=[0 for i in range(n)] def __init__(self,N): self.n=N self.data=[0 for i in range(N)] def add(self,p,x): assert 0<=p<self.n,"0<=p<n,p={0},n={1}".format(p,self.n) p+=1 while(p<=self.n): self.data[p-1]+=x p+=p& -p def sum(self,l,r): assert (0<=l and l<=r and r<=self.n),"0<=l<=r<=n,l={0},r={1},n={2}".format(l,r,self.n) return self.sum0(r)-self.sum0(l) def sum0(self,r): s=0 while(r>0): s+=self.data[r-1] r-=r&-r return s #必ず入っている集合を見つける #必ず以下マン、以上マンを見つける # 上72回まで # その後は8回 def doubling(nex:list, k:int = 1<<60 ,a:list = None) -> list: """nex:操作列 k:回数 a:初期列""" n = len(nex) #繰り返し回数の取得 log = (k+1).bit_length() res = [nex[:]] #ダブリング配列 #1,2,4,8...と入る p = [1,-1] for cnt in range(1,log): res.append([0]*n) for i in range(n): res[cnt][i] = res[cnt-1][i] + p[i%2] * res[cnt-1][res[cnt-1][i]] # 遷移先ではなく移動回数を保存しておくveri # res[cnt][i] = res[cnt-1][(res[cnt-1][i]+i)%n] + res[cnt-1][i] if k == 1<<60: return res #0回目の遷移(つまり初期状態) ans = ([*range(n)] if a is None else a[:]) for cnt in range(log): if k & (1<<cnt) != 0: ans = [ans[res[cnt][i]] for i in range(n)] # ans = [res[cnt][(ans[i]+i)%n] + ans[i] for i in range(n)] return ans n,k = MI() a = LI() if n == 1: print(*a) exit() p = [1,-1] if k%2 == 1: k -= 1 na = [p[i%2]*a[i] for i in range(n)] for i in range(n-1): na[i+1] += na[i] a = na[:] k //= 2 #回やる # ans = doubling(a,k) # print(ans) na = [0]*n ans = [0]*n ans[0] = na[0] = a[0]%mod ans[1] = na[1] = a[1]%mod div2 = pow(2,-1,mod) for i in range(2,n): na[i] = a[i] + na[i-2] #次のはじめ tmp = (ans[i-2] + na[i-2]) * k * div2 % mod ans[i] = (a[i] + tmp)%mod print(*ans)