結果
| 問題 |
No.1486 ロボット
|
| コンテスト | |
| ユーザー |
nephrologist
|
| 提出日時 | 2021-04-24 12:56:25 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 83 ms / 2,000 ms |
| コード長 | 1,974 bytes |
| コンパイル時間 | 715 ms |
| コンパイル使用メモリ | 82,444 KB |
| 実行使用メモリ | 76,764 KB |
| 最終ジャッジ日時 | 2024-07-04 09:04:25 |
| 合計ジャッジ時間 | 1,934 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 17 |
ソースコード
import sys
from heapq import heappop, heappush
from math import gcd
input = sys.stdin.buffer.readline
a, b, c, d, e = map(int, input().split())
g = gcd(a + b, c + d)
lcm = (a + b) * (c + d) // g
temp = 0
events = []
while temp < lcm:
heappush(events, (temp, 1))
heappush(events, (temp + a, -1))
temp += a + b
temp = 0
while temp < lcm:
heappush(events, (temp, 2))
heappush(events, (temp + c, -2))
temp += c + d
# print("events1", events)
score_cycle = 0
flag1 = 0
flag2 = 0
now = 0
onflag = 0
while events:
temp, num = heappop(events)
# print("tn", temp, num)
if num == 1:
flag1 = 1
elif num == 2:
flag2 = 1
elif num == -1:
flag1 = 0
else:
flag2 = 0
if flag1 == 1 and flag2 == 1:
onflag = 1
now = temp
elif flag1 == 0:
if onflag:
score_cycle += temp - now
onflag = 0
elif flag2 == 0:
if onflag:
score_cycle += temp - now
onflag = 0
events = []
lim = e % lcm
temp = 0
while temp <= lim:
heappush(events, (temp, 1))
temp += a
if temp > lim:
break
heappush(events, (temp, -1))
temp += b
temp = 0
while temp <= lim:
heappush(events, (temp, 2))
temp += c
if temp > lim:
break
heappush(events, (temp, -2))
temp += d
# print("events2", events)
score_rem = 0
flag1 = 0
flag2 = 0
now = 0
onflag = 0
while events:
temp, num = heappop(events)
if num == 1:
flag1 = 1
elif num == 2:
flag2 = 1
elif num == -1:
flag1 = 0
else:
flag2 = 0
if flag1 == 1 and flag2 == 1:
onflag = 1
now = temp
elif flag1 == 0:
if onflag:
score_rem += temp - now
onflag = 0
elif flag2 == 0:
if onflag:
score_rem += temp - now
onflag = 0
if onflag:
score_rem += lim - now
ans = (e // lcm) * score_cycle + score_rem
print(ans)
nephrologist