6490 - 纪念品分组

题目描述

学校为比赛准备了 n 件纪念品,第 i 件的价格是 p_i。现在要把它们装袋发给选手:

  • 每个袋子最多装 2 件纪念品;
  • 每个袋子里纪念品的总价不能超过 w。

请问最少需要多少个袋子?

输入
  • 第一行:两个整数 n 和 w;
  • 第二行:n 个整数,表示每件纪念品的价格。
输出

一行一个整数,表示最少需要的袋子数量。

样例

输入

6 100
90 20 20 30 50 60

输出

4

输入

4 10
5 5 5 5

输出

2
说明

【样例说明】:

90 单独一袋;20 + 60 一袋;20 + 50 一袋;30 单独一袋,共 4 袋。

【样例说明】:

每两件装一袋,2 袋。

数据范围

1 \le n \le 100000;1 \le w \le 10^9;1 \le 价格 \le w

考察点

排序;贪心思想;双指针扫描。

提示

先把价格从小到大排序。每次看最贵的和当前最便宜的:两件能装进一个袋子就一起装(袋子数 +1,两个指针都往中间收),装不下就说明最贵的那件只能单独一袋(袋子数 +1,只移动贵的指针)。

标签
题目参数
时间限制 1 秒
内存限制 512 MB
提交次数 8
通过人数 4
金币数量 1 枚
难度 入门


上一题 下一题