农夫 John 余下了 m批干草无法处理,他准备要开一个拍卖会去出售他的干草。现在有 n 个顾客,每个顾客的报价是 a[i]。现在 John 要确定一个单价,所有报价大于等于单价的顾客将会买到 1 批干草(m 批甘草不用全卖完),总共获得的金钱作为收益。那么问题来了,如何设定单价,使得收益最大。
输入格式
第一行两个正数m,n。分别表示m批干草,和n个顾客。
第二行 n 个整数,a[i] 表示第 i 个顾客的报价。
数据范围:1≤n,m≤1000,1≤a[i]≤10000
输出格式
两个用空格分隔的整数,分别表示单价和总收益。
如果有多个相等的最大收益,选取单价最小的那个。
样例输入
5 4 2 8 10 7
样例输出
7 21
#include <iostream>
#include <algorithm>
using namespace std;
int n, m, a[1010], maxn, ans;
int main(){
cin >> m >> n;
for(int i = 0; i < n; i++){
cin >> a[i];
}
sort(a, a+ n);
for(int i = 0; i < n; i++){
if(m > n - i){
if((n - i) * a[i] > maxn){
maxn = (n - i) * a[i];
ans = a[i];
}
}else{
if(m * a[i] > maxn){
maxn = m * a[i];
ans = a[i];
}
}
}
cout << ans << " " << maxn << endl;
return 0;
}