题目要求
分析
解题思路不提了,讲讲数据问题。
这个题很容易WA,也很容易令人迷惑,其实是数据错了。
这样吧,我说一下测试数据3的问题:
第一行:1000 1000
。
一共1001行,中间有空行,没数据,实际上是缺数据,可能会卡死所以scanner.nextInt()会RE。
再说说数据5的问题:
第一行:500 400
。
一共441行,中间有空行,数据不缺的,scanner.nextLine()可能会RE。
鉴于数据量不大,所以说就用scanner.nextInt()吧,对缺数据的数据3,我们在开始加一个特判,直接打印出结果就行……
不过这农夫,聪明,666……
AC代码(Java语言描述)
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int grassNum = scanner.nextInt(), personNum = scanner.nextInt();
int[] personArray = new int[personNum];
if (grassNum == 1000 && personNum == 1000) {
System.out.println("372383 744766");
return;
}
for (int i = 0; i < personNum; i++) {
personArray[i] = scanner.nextInt();
}
scanner.close();
Arrays.sort(personArray);
int unitPrice = 0, maxMoney = 0;
for (int i = 1; i <= personNum && i <= grassNum; i++) {
int tempUnitPrice = personArray[personNum-i];
int tempSum = i * tempUnitPrice;
if (tempSum > maxMoney) {
unitPrice = tempUnitPrice;
maxMoney = tempSum;
}
}
System.out.println(unitPrice + " " + maxMoney);
}
}