HPUOJ---2017寒假作业--专题0/F-The MAX

F - The MAX


 
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
思路:由于各x相加最大为2009,每一个x最小为1,要使最后和最大,可令系数v最大的那一项的x最大,即令其他项的x都为1,那么这一项
的x就是2009-(n-1)=2010-n,乘以系数v;其余项的x都是1,所以其总和就是系数v之和。
最后结果可能超出int范围,所以在定义时,应使v为long long型,这样才能自动转换。(易错)
#include<cstdio>
#include<algorithm>
using namespace std;
bool cmp(int A,int B)
{
	return A>B;
} 
 
 int main()
 {
 	int N,i;
 	long long F,sum;
 	long long v[100+11];
 	while(scanf("%d",&N),N)
 	{
 		sum=0;
 		F=0;
 		for(i=0;i<N;i++)
 		{
 			scanf("%lld",&v[i]); 
		}
		 sort(v,v+N,cmp);
		 for(i=1;i<N;i++)
		 {
		 	sum+=v[i];
		 }
		 F=(2010-N)*v[0]+sum;
		 printf("%lld\n",F);
	 }
	 return 0;
 }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值