P2637 [USACO08NOV] 第一次,第二次,成交!Going Once, Going Twice, Gone! B

拍卖干草的最佳定价策略

P2637 [USACO08NOV] 第一次,第二次,成交!Going Once, Going Twice, Gone! B

题目描述

因为奶牛们的节食运动给 FJ 余下了一大批干草无法处理,所以他准备要开一个拍卖会去出售他的干草。

他有 nnn 批干草。他的客户有 mmm 个,都是和他一样的农夫。第 iii 名农夫会告诉 FJ 他会为 FJ 的每批干草付 pip_ipi 的钱。每个农夫都想买(也只想买)FJ 的一批草料。

为了确保农夫们不会互相嫉妒,所以 FJ 决定要以一个固定的价格出售他的草料。每一个出价大于等于 FJ 的要价的农夫将会买到草料。

请你帮助 FJ 找出能让他卖出最多的钱的最低的单批草料的售价。

输入格式

第一行:两个被空格隔开的整数 nnnmmm

第二行到第 m+1m+1m+1 行:第 i+1i+1i+1 行只包含一个整数 pip_ipi

输出格式

共一行,包含由空格隔开的两个整数:FJ 能出的每批草料的最低价格,以及他能赚到的最多的钱。

输入输出样例 #1

输入 #1

5 4
2
8
10
7

输出 #1

7 21

说明/提示

样例解释

FJ 有 555 批草料,444 个农夫想要购买。他们出价分别为:每批草料为 222888101010777

FJ 应该把价格设定为 777,这样会有 333 个农夫会付钱买草料,FJ 自己会挣到 212121 的钱。

数据规模与约定

对于 100%100\%100% 的数据,1≤m,n≤10001\leq m, n\leq 10001m,n10001≤pi≤1,000,0001\leq p_i\leq 1,000,0001pi1,000,000

#include<bits/stdc++.h>

using namespace std;
typedef long long ll;	// 严格要求
ll a[1000100];
int main(){
	ios :: sync_with_stdio(0);	// 提高cin、cout的运行速度
	ll n, m, maxn = -1e9, mx = -1;
	cin >> n >> m;
	
	for(ll i = 1; i <= n; i++){
		cin >> a[i];
	}
	
	sort(a + 1, a + 1 + n);
	
	for(ll i = 1; i <= n; i++){		//循环枚举定价 
		ll cnt = 0;
		for(ll j = i; j <= n; j++){	//比定价高 或者相等 
			cnt += a[i];
		}
		if(cnt > maxn){		//出现最大的钱 
			mx = a[i];		//当前定价 
			maxn = cnt;
		} 
	}
	
	cout << mx << " " << maxn << endl;

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值