結果
問題 | No.2559 眩しい数直線 |
ユーザー |
|
提出日時 | 2023-12-02 14:41:34 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 213 ms / 2,000 ms |
コード長 | 3,331 bytes |
コンパイル時間 | 293 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 90,240 KB |
最終ジャッジ日時 | 2024-09-26 17:09:33 |
合計ジャッジ時間 | 6,098 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 20 |
ソースコード
from __future__ import annotationsimport arrayimport bisectimport copyimport fractionsimport heapqimport itertoolsimport mathimport randomimport reimport stringimport sysimport timefrom collections import defaultdict, dequefrom functools import lru_cachesys.setrecursionlimit(10**6)def read_int_list():return list(map(int, input().split()))def read_int():return int(input())def read_str_list():return list(input().split())def read_str():return input()def is_prime(n: int) -> bool:if n < 2:return Falsei = 2ok = Truewhile i * i <= n:if n % i == 0:ok = Falsei += 1return okdef eratosthenes(n: int) -> list[bool]:is_prime_list = ([False, True] * (n // 2 + 1))[0 : n + 1]is_prime_list[1] = Falseis_prime_list[2] = Truefor i in range(3, n + 1, 2):if not (is_prime_list[i]):continueif i * i > n:breakfor k in range(i * i, n + 1, i):is_prime_list[k] = Falsereturn is_prime_listdef legendre(n: int, p: int) -> int:cnt = 0pp = pwhile pp <= n:cnt += n // pppp *= preturn cntdef prime_factorize(n: int) -> defaultdict[int, int]:nn = ni = 2d: defaultdict[int, int] = defaultdict(int)while i * i <= n:while nn % i == 0:d[i] += 1nn //= ii += 1if nn != 1:d[nn] += 1return ddef make_divisors(n: int) -> list[int]:i = 1ret = []while i * i <= n:if n % i == 0:ret.append(i)if i != n // i:ret.append(n // i)i += 1ret.sort()return retdef gcd(a: int, b: int) -> int:if a == 0:return belse:return gcd(b % a, a)def lcm(a: int, b: int) -> int:return a * b // gcd(a, b)def ext_gcd(a: int, b: int) -> tuple[int, int, int]:if a == 0:return (0, 1, b)x, y, g = ext_gcd(b % a, a)return (y - b // a * x, x, g)class UnionFind:def __init__(self, n):self.parent = [-1] * nself.size = ndef find(self, x):if self.parent[x] < 0:return xelse:self.parent[x] = self.find(self.parent[x])return self.parent[x]def merge(self, x, y):x = self.find(x)y = self.find(y)if x != y:if self.parent[x] > self.parent[y]:x, y = y, xself.parent[x] += self.parent[y]self.parent[y] = xself.size -= 1return Trueelse:return Falsedef same(self, x, y):return self.find(x) == self.find(y)def size(self, x):return -self.parent[self.find(x)]def solve():N,X=read_int_list()ans=[0 for _ in range(X)]for _ in range(N):A,B=read_int_list()A-=1now=Bpos=Awhile 0<=pos<X:ans[pos]=max(ans[pos],now)now-=1pos+=1now=Bpos=Awhile 0<=pos<X:ans[pos]=max(ans[pos],now)now-=1pos-=1print(*ans)def main():# t = read_int()# for _ in range(t):solve()main()