結果
| 問題 |
No.281 門松と魔法(1)
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2015-11-26 20:19:41 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 33 ms / 1,000 ms |
| コード長 | 1,867 bytes |
| コンパイル時間 | 124 ms |
| コンパイル使用メモリ | 12,800 KB |
| 実行使用メモリ | 11,136 KB |
| 最終ジャッジ日時 | 2024-11-06 20:43:22 |
| 合計ジャッジ時間 | 3,377 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 57 |
ソースコード
def solve(d, h1, h2, h3):
if (h1 == 0) + (h2 == 0) + (h3 == 0) >= 2:
return -1
if h1 == h2 == h3:
if max(0, h1 - d) == max(0, h1 - 2*d):
return -1
return 3
if d == 0:
if h1 == h2 or h2 == h3 or h3 == h1:
return -1
if max(h1, h2, h3) == h2 or min(h1, h2, h3) == h2:
return 0
else:
return -1
if h1 == h3:
if h1 == 0:
return -1
if h2 > h1:
return 1
# h2 < h1
if h1 - d > h2:
return 1
if max(0, h1 - d) == h2:
if h2 > 0:
return 2
else:
return -1
if max(0, h1 - d) == max(0, h2 - d):
return -1
return 2
if h1 > h3:
h1, h3 = h3, h1
# h1 < h3 に強制的に変更
if h1 > h2:
return 0
if h3 < h2:
return 0
if h1 == h2:
if h2 > 0:
return 1
else:
return 0
if h3 == h2:
if max(0, h2 - d) < h1:
return 1
if max(0, h3 - d) != h1:
return 1
if max(0, h3 - d * 2) != h1:
return 2
if max(0, h3 - d) != max(0, h1 - d):
return 2
if max(0, h2 - d * 2) < h1:
return 2
return -1
# h1 < h2 < h3 のケース
s3 = (h3 - h2) // d + 1
h33 = max(0, h3 - s3 * d)
if h33 == h1:
if h1 > 0:
s3 += 1
else:
s3 = float('inf')
s2 = (h2 - h1) // d + 1
h22 = max(0, h2 - s2 * d)
if h22 == h1:
if h1 > 0:
s2 += 1
else:
s2 = float('inf')
s = min(s3, s2)
if s == float('inf'):
return -1
else:
return s
d = int(input())
h1 = int(input())
h2 = int(input())
h3 = int(input())
print(solve(d, h1, h2, h3))