結果
| 問題 | No.686 Uncertain LIS | 
| コンテスト | |
| ユーザー |  gew1fw | 
| 提出日時 | 2025-06-12 21:38:23 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                WA
                                 
                             | 
| 実行時間 | - | 
| コード長 | 1,222 bytes | 
| コンパイル時間 | 223 ms | 
| コンパイル使用メモリ | 82,408 KB | 
| 実行使用メモリ | 87,044 KB | 
| 最終ジャッジ日時 | 2025-06-12 21:42:56 | 
| 合計ジャッジ時間 | 6,072 ms | 
| ジャッジサーバーID (参考情報) | judge4 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 10 WA * 26 | 
ソースコード
import bisect
n = int(input())
ranges = []
for _ in range(n):
    l, r = map(int, input().split())
    ranges.append((l, r))
tails = []
for i in range(n):
    l, r = ranges[i]
    if not tails:
        tails.append(l)
        continue
    current_max = tails[-1]
    desired = max(l, current_max + 1)
    if desired <= r:
        tails.append(desired)
    else:
        pos = bisect.bisect_left(tails, l)
        best_k = pos - 1
        if best_k >= 0:
            desired = max(l, tails[best_k] + 1)
            if desired <= r:
                if best_k + 1 >= len(tails):
                    tails.append(desired)
                else:
                    if desired < tails[best_k + 1]:
                        tails[best_k + 1] = desired
            else:
                pos = bisect.bisect_left(tails, l)
                if pos < len(tails):
                    if tails[pos] >= l:
                        tails[pos] = l
                else:
                    tails.append(l)
        else:
            pos = bisect.bisect_left(tails, l)
            if pos < len(tails):
                if tails[pos] >= l:
                    tails[pos] = l
            else:
                tails.append(l)
print(len(tails))
            
            
            
        