Submission #636869

#TimeUsernameProblemLanguageResultExecution timeMemory
636869beaconmc이상한 기계 (APIO19_strange_device)Pypy 3
100 / 100
1619 ms353536 KiB
import sys
input = lambda: sys.stdin.readline().strip()
from math import *
n,a,b = map(int, input().split())

def lcm(a,b):
  return a*b//gcd(a,b)

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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...