結果
問題 |
No.968 引き算をして門松列(その3)
|
ユーザー |
|
提出日時 | 2022-04-20 23:57:46 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 320 ms / 2,000 ms |
コード長 | 1,184 bytes |
コンパイル時間 | 427 ms |
コンパイル使用メモリ | 82,564 KB |
実行使用メモリ | 81,216 KB |
最終ジャッジ日時 | 2024-06-12 02:51:55 |
合計ジャッジ時間 | 3,349 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 10 |
ソースコード
inf = 10**30 # b > c > a def calc1(a,b,c,x,y,z): l = [a,b,c] count = [0,0,0] count2 = [0,0,0] if a >= c: count[2] += (a-c+1)*z count2[2] += a-c+1 c = a+1 if c >= b: count[1] += (c-b+1)*y count2[1] += c-b+1 b = c+1 for i in range(3): for j in range(3): if i == j: continue l[j] -= count2[i] if min(l) > 0: return sum(count) return inf # c > a > b def calc2(a,b,c,x,y,z): l = [a,b,c] count = [0,0,0] count2 = [0,0,0] if b >= a: count[0] += (b-a+1)*x count2[0] += b-a+1 a = b+1 if a >= c: count[2] += (a-c+1)*z count2[2] += a-c+1 c = a+1 for i in range(3): for j in range(3): if i == j: continue l[j] -= count2[i] if min(l) > 0: return sum(count) return inf t = int(input()) for _ in range(t): a,b,c,x,y,z = map(int,input().split()) x,y,z = y,z,x ans = min(calc1(a,b,c,x,y,z),calc2(a,b,c,x,y,z),calc1(c,b,a,z,y,x),calc2(c,b,a,z,y,x)) if ans == inf: ans = -1 print(ans)