#task. 训练任务安排(task)

    ID: 3412 传统题 文件IO:task 1000ms 512MiB 尝试: 2 已通过: 0 难度: 1 上传者: 标签>小学组青岛西海岸新区第六届人工智能教育竞赛传统型

训练任务安排(task)

训练任务安排(task)

题目描述

灵域训练营为小刘准备了一批训练任务。这些任务包含体能训练、反应训练、灵力控制训练、战术判断训练等多种内容。

一共有 nn 个训练任务。第 ii 个任务有两个信息:

  • 完成这个任务需要 tit_i 分钟;
  • 这个任务最晚必须在第 did_i 分钟结束。

小刘可以自由决定任务的完成顺序,也可以选择放弃部分任务。但是训练营有严格规定:

  • 同一时间只能进行一个任务;
  • 一旦开始某个任务,就必须连续完成,不能中途暂停;
  • 如果某个任务的完成时间晚于它规定的最晚结束时间,则这个任务不能算作成功完成;
  • 没有被选择的任务不需要考虑完成时间。

小刘希望在有限的训练安排中,尽可能多地完成任务。

请你帮助小刘计算:他最多可以成功完成多少个训练任务。

输入格式

输入文件:task.in

第一行输入一个整数 nn,表示训练任务数量。

接下来 nn 行,每行输入两个整数 ti,dit_i,d_i,分别表示第 ii 个任务所需时间和最晚完成时间。

输出格式

输出文件:task.out

输出一个整数,表示最多可以成功完成的任务数量。

样例

5
3 5
2 6
4 7
1 3
2 8
4

样例说明

共有 55 个训练任务:任务 11 需要 33 分钟,最晚第 55 分钟完成;任务 22 需要 22 分钟,最晚第 66 分钟完成;任务 33 需要 44 分钟,最晚第 77 分钟完成;任务 44 需要 11 分钟,最晚第 33 分钟完成;任务 55 需要 22 分钟,最晚第 88 分钟完成。

小刘可以选择其中 44 个任务,并安排合适的顺序完成它们。因此最多可以完成的任务数量为 44

数据范围

对于 30%30\% 的数据:1n10001 \le n \le 10001ti,di1051 \le t_i,d_i \le 10^5

对于 60%60\% 的数据:1n500001 \le n \le 500001ti,di1091 \le t_i,d_i \le 10^9

对于 100%100\% 的数据:1n2000001 \le n \le 2000001ti,di1091 \le t_i,d_i \le 10^9

提交要求

本题使用文件输入输出。C++ 程序可使用:

freopen("task.in", "r", stdin);
freopen("task.out", "w", stdout);