题目描述
农夫John 余下了�m批干草无法处理,他准备要开一个拍卖会去出售他的干草。现在有�n个顾客,每个顾客的报价是��ai。现在John要确定一个单价,所有报价大于等于单价的顾客将会买到11批干草(�m批干草不用全卖完),总共获得的金钱作为收益。那么问题来了,如何设定单价,使得收益最大。
输入格式
第一行两个整数�m,�n,分别表示�m批干草和�n个顾客。第二行�n个整数,��ai表示第�i个顾客的报价。
数据范围:1<�,�≤10001<n,m≤1000,1<��≤100001<ai≤10000。
输出格式
两个用空格分隔的整数,分别表示单价和总收益。如果有多个相等的最大收益,选取单价最小的那个。
样例输入
5 4
2 8 10 7
样例输出
7 21
AC代码
#include<bits/stdc++.h>
using namespace std;
int maxn,ans;
int a[10001];
int main(){
int n,m;
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;
return 0;
}