CF1374E2.Reading Books (hard version)

省选/NOI-

通过率:0%

时间限制:3.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

Easy and hard versions are actually different problems, so read statements of both problems completely and carefully.

Summer vacation has started so Alice and Bob want to play and joy, but... Their mom doesn't think so. She says that they have to read exactly mm books before all entertainments. Alice and Bob will read each book together to end this exercise faster.

There are nn books in the family library. The ii-th book is described by three integers: tit_i — the amount of time Alice and Bob need to spend to read it, aia_i (equals 11 if Alice likes the ii-th book and 00 if not), and bib_i (equals 11 if Bob likes the ii-th book and 00 if not).

So they need to choose exactly mm books from the given nn books in such a way that:

  • Alice likes at least kk books from the chosen set and Bob likes at least kk books from the chosen set;
  • the total reading time of these mm books is minimized (they are children and want to play and joy as soon a possible).

The set they choose is the same for both Alice an Bob (it's shared between them) and they read all books together, so the total reading time is the sum of tit_i over all books that are in the chosen set.

Your task is to help them and find any suitable set of books or determine that it is impossible to find such a set.

简单版本和困难版本实际上是两个不同的问题,因此请完整且仔细地阅读两个版本的题目描述。

暑假开始了,爱丽丝(Alice)和鲍勃(Bob)想玩耍、尽情欢乐……但……他们的妈妈不这么认为。她要求他们必须先一起读完恰好 mm 本书,才能开始所有娱乐活动。

家庭图书馆共有 nn 本书。第 ii 本书由三个整数描述:tit_i —— 爱丽丝和鲍勃共同阅读该书所需的时间;aia_i(若爱丽丝喜欢第 ii 本书则为 11,否则为 00);bib_i(若鲍勃喜欢第 ii 本书则为 11,否则为 00)。

因此,他们需要从给定的 nn 本书中恰好选出 mm 本书,使得:

  • 在所选的 mm 本书中,爱丽丝至少喜欢其中 kk 本,鲍勃也至少喜欢其中 kk 本;
  • 这 mm 本书的总阅读时间最小(因为他们是孩子,希望尽快完成读书任务去玩耍和欢乐)。

他们所选择的书集对爱丽丝和鲍勃是相同的(即两人共享同一套书),且所有书均由两人共同阅读,因此总阅读时间为所选书中所有 tit_i 值之和。

你的任务是帮助他们找出任意一个满足条件的书籍集合,或判定这样的集合不存在。

输入格式

The first line of the input contains three integers nn, mm and kk (1≤k≤m≤n≤2⋅1051 \le k \le m \le n \le 2 \cdot 10^5).

The next nn lines contain descriptions of books, one description per line: the ii-th line contains three integers tit_i, aia_i and bib_i (1≤ti≤1041 \le t_i \le 10^4, 0≤ai,bi≤10 \le a_i, b_i \le 1), where:

  • tit_i — the amount of time required for reading the ii-th book;
  • aia_i equals 11 if Alice likes the ii-th book and 00 otherwise;
  • bib_i equals 11 if Bob likes the ii-th book and 00 otherwise.

输入的第一行包含三个整数 nn、mm 和 kk(满足 1≤k≤m≤n≤2⋅1051 \le k \le m \le n \le 2 \cdot 10^5)。

接下来的 nn 行描述了 nn 本书,每行描述一本书:第 ii 行包含三个整数 tit_i、aia_i 和 bib_i(满足 1≤ti≤1041 \le t_i \le 10^4,0≤ai,bi≤10 \le a_i, b_i \le 1),其中:

  • tit_i —— 阅读第 ii 本书所需的时间;
  • aia_i 在 Alice 喜欢第 ii 本书时为 11,否则为 00;
  • bib_i 在 Bob 喜欢第 ii 本书时为 11,否则为 00。

输出格式

If there is no solution, print only one integer -1.

If the solution exists, print TT in the first line — the minimum total reading time of the suitable set of books. In the second line print mm distinct integers from 11 to nn in any order — indices of books which are in the set you found.

If there are several answers, print any of them.

如果无解,仅输出一个整数 −1-1。

如果存在解,在第一行输出 TT —— 所选书籍集合的最小总阅读时间。在第二行输出 mm 个互不相同的、取值范围为 11 到 nn 的整数(顺序任意)—— 表示你所找到的集合中各本书籍的索引。

若存在多个答案,输出其中任意一个即可。

输入输出样例

  • 输入#1

    6 3 1
    6 0 0
    11 1 0
    9 0 1
    21 1 1
    10 1 0
    8 0 1

    输出#1

    24
    6 5 1
  • 输入#2

    6 3 2
    6 0 0
    11 1 0
    9 0 1
    21 1 1
    10 1 0
    8 0 1

    输出#2

    39
    4 6 5

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

首页