이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
from math import *
n,a,b = map(int, input().split())
ranges = []
for i in range(n):
ranges.append(list(map(int, input().split())))
k = (lcm(a,b+1)//(b+1)) * b
new = []
ans = 0
flag = False
for i in ranges:
if i[1]-i[0]+1 >= k:
flag = True
if i[0]%k > i[1]%k:
new.append([i[0]%k,k-1])
new.append([0,i[1]%k])
else:
new.append([i[0]%k, i[1]%k])
new.sort()
realnew = []
if flag:
print(k)
else:
cur = k
for i in range(len(new)):
if not realnew:
realnew.append(new[i])
continue
if realnew[-1][1] >= new[i][0]:
realnew[-1][1] = max(realnew[-1][1],new[i][1])
else:
realnew.append(new[i])
for i in realnew:
ans += i[1]-i[0]+1
print(ans)
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |