cf 1725b-B. Basketball Together

A basketball competition is held where the number of players in a team does not have a maximum or minimum limit (not necessarily 5 players in one team for each match). There are N candidate players in the competition that will be trained by Pak Chanek, the best basketball coach on earth. The i-th candidate player has a power of Pi.

Pak Chanek will form zero or more teams from the N candidate players on the condition that each candidate player may only join in at most one team. Each of Pak Chanek’s teams will be sent to compete once with an enemy team that has a power of D. In each match, the team sent is said to defeat the enemy team if the sum of powers from the formed players is strictly greater than D.

One of Pak Chanek’s skills is that when a team that has been formed plays in a match, he can change the power of each player in the team to be equal to the biggest player power from the team.

Determine the maximum number of wins that can be achieved by Pak Chanek.

Input
The first line contains two integers N and D (1≤N≤105, 1≤D≤109) — the number of candidate players and the power of the enemy team.

The second line contains N integers P1,P2,…,PN (1≤Pi≤109) — the powers of all candidate players.

Output
A line containing an integer representing the maximum number of wins that can be achieved by Pak Chanek.

Example
inputCopy
6 180
90 80 70 60 50 100
outputCopy
2
Note
The 1-st team formed is a team containing players 4 and 6. The power of each player in the team becomes 100. So the total power of the team is 100+100=200>180.

The 2-nd team formed is a team containing players 1, 2, and 5. The power of each player in the team becomes 90. So the total power of the team is 90+90+90=270>180.

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 7;
int main(void) {
	long long n, d;
	int a[N] = { 0 };
	long long sum = 0;
	cin >> n >> d;
	for (int i = 1; i <= n; i++)cin >> a[i];
	int k = 0;
	sort(a+1, a + n+1);
	for (int i = n; i > 0; i--) {
		long long u = 1;
		while (k < i) {
			long long p = a[i];
				p *= u;
				if (p > d) {
					sum++;
					break;
				}
				k++;
				u++;
			}
	}
	cout << sum;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值