結果
問題 |
No.2244 Integer Complete
|
ユーザー |
![]() |
提出日時 | 2025-06-12 19:14:27 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,635 bytes |
コンパイル時間 | 233 ms |
コンパイル使用メモリ | 82,372 KB |
実行使用メモリ | 83,012 KB |
最終ジャッジ日時 | 2025-06-12 19:14:47 |
合計ジャッジ時間 | 5,802 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 19 TLE * 1 -- * 40 |
ソースコード
import math def merge_intervals(cards): intervals = [] for a in cards: start = a * a end = (a + 1) * (a + 1) - 1 intervals.append((start, end)) if not intervals: return [] intervals.sort() merged = [intervals[0]] for current in intervals[1:]: last = merged[-1] if current[0] <= last[1] + 1: new_start = last[0] new_end = max(last[1], current[1]) merged[-1] = (new_start, new_end) else: merged.append(current) return merged def is_in_intervals(x, intervals): left = 0 right = len(intervals) - 1 while left <= right: mid = (left + right) // 2 s, e = intervals[mid] if s <= x <= e: return True elif x < s: right = mid - 1 else: left = mid + 1 return False def is_possible(t, s_intervals, b_intervals): divisors = set() for i in range(1, int(math.isqrt(t)) + 1): if t % i == 0: divisors.add(i) divisors.add(t // i) for x in divisors: if is_in_intervals(x, s_intervals): y = t // x if is_in_intervals(y, b_intervals): return True return False n, m = map(int, input().split()) a = list(map(int, input().split())) b = list(map(int, input().split())) s_intervals = merge_intervals(a) b_intervals = merge_intervals(b) if is_possible(1, s_intervals, b_intervals): t = 2 while True: if not is_possible(t, s_intervals, b_intervals): print(t) break t += 1 else: print(1)