The MAX
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2042 Accepted Submission(s): 883
Problem Description
Giving N integers, V1, V2,,,,Vn, you should find the biggest value of F.
Input
Each test case contains a single integer N (1<=N<=100). The next line contains N integers, meaning the value of V1, V2....Vn.(1<= Vi <=10^8).The input is terminated by a set starting with N = 0. This set should not be processed.
Output
For each test case, output the biggest value of F you can find on a line.
Sample Input
2 1 2 0
Sample Output
4017
解析:数学水题,稍微推一下就出来了,要让你求最大值,我们只要从小到大排好V的值,让最后一个V值乘以尽可能最大的Y,剩下的V都乘以1就能使得结果最大。
#include <iostream>
#include <algorithm>
#include <queue>
#include <algorithm>
#include <cstring>
using namespace std;
int main(){
__int64 a[110], n;
__int64 sum;
while(scanf("%I64d", &n), n){
for(int i = 1; i <= n; ++i)
scanf("%I64d", &a[i]);
sort(a + 1, a + n + 1);
sum = 0;
for(int i = 1; i <= n - 1; ++i)
sum += a[i];
printf("%I64d\n",sum + a[n] * (2010 - n));
}
return 0;
}