結果
| 問題 |
No.281 門松と魔法(1)
|
| コンテスト | |
| ユーザー |
vwxyz
|
| 提出日時 | 2022-10-03 02:29:24 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 53 ms / 1,000 ms |
| コード長 | 1,228 bytes |
| コンパイル時間 | 189 ms |
| コンパイル使用メモリ | 12,672 KB |
| 実行使用メモリ | 12,544 KB |
| 最終ジャッジ日時 | 2024-12-26 03:34:13 |
| 合計ジャッジ時間 | 4,237 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 57 |
ソースコード
from ast import Mod
import bisect
import copy
import decimal
import fractions
import heapq
import itertools
import math
import random
import sys
import time
from collections import Counter,deque,defaultdict
from functools import lru_cache,reduce
from heapq import heappush,heappop,heapify,heappushpop,_heappop_max,_heapify_max
def _heappush_max(heap,item):
heap.append(item)
heapq._siftdown_max(heap, 0, len(heap)-1)
def _heappushpop_max(heap, item):
if heap and item < heap[0]:
item, heap[0] = heap[0], item
heapq._siftup_max(heap, 0)
return item
from math import gcd as GCD
read=sys.stdin.read
readline=sys.stdin.readline
readlines=sys.stdin.readlines
write=sys.stdout.write
D=int(readline())
H=[int(readline()) for _ in range(3)]
inf=1<<60
ans=inf
for tpl in itertools.permutations([0,1,2]):
if tpl[1]==1:
continue
HH=H[:]
cnt=0
if D:
for a,b in zip(tpl[:-1],tpl[1:]):
if HH[a]<=HH[b]:
c=(HH[b]-HH[a])//D+1
HH[b]-=c*D
cnt+=c
HH[b]=max(HH[b],0)
if len(set(HH))==3 and HH[1] in (min(HH),max(HH)) and all(h>=0 for h in HH):
ans=min(ans,cnt)
if ans==inf:
ans=-1
print(ans)
vwxyz