CF1249D2.Too Many Segments (hard version)

普及+/提高

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

The only difference between easy and hard versions is constraints.

You are given nn segments on the coordinate axis OXOX. Segments can intersect, lie inside each other and even coincide. The ii-th segment is [li;ri][l_i; r_i] (li≤ril_i \le r_i) and it covers all integer points jj such that li≤j≤ril_i \le j \le r_i.

The integer point is called bad if it is covered by strictly more than kk segments.

Your task is to remove the minimum number of segments so that there are no bad points at all.

简单版本与困难版本的唯一区别在于约束条件。

你在坐标轴 OXOX 上给定了 nn 条线段。这些线段可以相交、互相包含,甚至完全重合。第 ii 条线段为 [li;ri][l_i; r_i](其中 li≤ril_i \le r_i),它覆盖所有满足 li≤j≤ril_i \le j \le r_i 的整数点 jj。

若一个整数点被严格多于 kk 条线段所覆盖,则称该点为坏点。

你的任务是移除最少数量的线段,使得最终不存在任何坏点。

输入格式

The first line of the input contains two integers nn and kk (1≤k≤n≤2⋅1051 \le k \le n \le 2 \cdot 10^5) — the number of segments and the maximum number of segments by which each integer point can be covered.

The next nn lines contain segments. The ii-th line contains two integers lil_i and rir_i (1≤li≤ri≤2⋅1051 \le l_i \le r_i \le 2 \cdot 10^5) — the endpoints of the ii-th segment.

输入的第一行包含两个整数 nn 和 kk(1≤k≤n≤2⋅1051 \le k \le n \le 2 \cdot 10^5)—— 分别表示线段的数量以及每个整数点最多能被覆盖的线段数量。

接下来的 nn 行描述这些线段。第 ii 行包含两个整数 lil_i 和 rir_i(1≤li≤ri≤2⋅1051 \le l_i \le r_i \le 2 \cdot 10^5)—— 表示第 ii 条线段的两个端点。

输出格式

In the first line print one integer mm (0≤m≤n0 \le m \le n) — the minimum number of segments you need to remove so that there are no bad points.

In the second line print mm distinct integers p1,p2,…,pmp_1, p_2, \dots, p_m (1≤pi≤n1 \le p_i \le n) — indices of segments you remove in any order. If there are multiple answers, you can print any of them.

第一行输出一个整数 mm(0≤m≤n0 \le m \le n)—— 使得不存在坏点所需移除的线段的最少数量。

第二行输出 mm 个互不相同的整数 p1,p2,…,pmp_1, p_2, \dots, p_m(1≤pi≤n1 \le p_i \le n)—— 以任意顺序输出你所移除的线段的下标。若存在多个答案,输出任意一个即可。

输入输出样例

  • 输入#1

    7 2
    11 11
    9 11
    7 8
    8 9
    7 8
    9 11
    7 9

    输出#1

    3
    4 6 7
  • 输入#2

    5 1
    29 30
    30 30
    29 29
    28 30
    30 30

    输出#2

    3
    1 4 5
  • 输入#3

    6 1
    2 3
    3 3
    2 3
    2 2
    2 3
    2 3

    输出#3

    4
    1 3 5 6

输入解题思路,AI测评打分。不知道怎么写?

首页