Submission #217050

#TimeUsernameProblemLanguageResultExecution timeMemory
217050sevlllStrange Device (APIO19_strange_device)Pypy 2
100 / 100
3054 ms188124 KiB
from sys import stdin


def gcd(x, y):
    if x == 0:
        return y
    if y == 0:
        return x
    if x > y:
        x, y = y, x
    return gcd(y % x, x)



n, a, b = map(int, stdin.readline().split())
pr = []
for i in range(n):
    x, y = map(int, stdin.readline().split())
    pr.append((x, y))
g = gcd(a, b+1)
num = a * b // g
ev = []
ans = 0
for p in pr:
    l = p[0]
    r = p[1]
    if r - l + 1 >= num:
        ans = num
    l %= num
    r %= num
    if r < l:
        ev += [(l, 1), (num, -1), (0, 1), (r+1, -1)]
    else:
        ev += [(l, 1), (r + 1, -1)]
ev.sort()
bal = 0
last = 0
for p in ev:
    x = p[0]
    tp = p[1]
    if bal: ans += x - last
    last = x
    bal += tp
print min(num, 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...