4. Delicious Sequence
题目ID:6077选做题100分
最新提交:
Wrong Answer
40 分
历史最高:
Wrong Answer
40 分
时间限制: 1000ms
空间限制: 262144kB
题目描述
题目描述
此方非常喜欢吃回转寿司,现在她来到了回转寿司店,一盘盘寿司在她面前滑过,每盘寿司都有它的美味度(有可能是负数)。
由于此方财力有限,她只能吃nn盘寿司,然而不巧的是滑动寿司的轨道故障了,此方只能从轨道头部或尾部花11秒的时间吃掉一盘寿司,并获得它的美味度,但是每经过11秒,所有没被吃掉的寿司的美味度都会下降11。
现在此方想要知道,她如果按照最优的方法吃掉所有寿司,最多能获得多少美味度。
输入格式
第一行包含一个整数n(1≤n≤105)n(1≤n≤105),表示寿司的盘数。
第二行包含nn个整数a1,a2,…,an(0≤∣ai∣≤109)a1,a2,…,an(0≤∣ai∣≤109),中间以空格分隔,分别表示每盘寿司的美味度。
输出格式
输出一个整数,表示以最优方案吃完所有寿司能获得的最大美味度。
样例 #1
样例输入 #1
3
3 2 3
样例输出 #1
5
样例 #2
样例输入 #2
1
-10
样例输出 #2
-10
提示
对于样例1,此方可以选择先吃a1=3a1=3,之后剩下的两个寿司美味度下降:a2=1,a3=2a2=1,a3=2,此方选择吃队尾的a3=2a3=2,最后剩下的寿司美味度变为00,此方再将其吃掉,所以一共获得美味度为3+2+0=53+2+0=5.
谁能帮我看看为什么只有40分
以下是我的代码
#include<bits/stdc++.h>
using namespace std;
int a[100005];
bool cmp(int x,int y){
return x>y;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1,cmp);
int sum=0;
for(int i=1;i<=n;i++){
sum+=a[i]-i+1;
}
cout<<sum<<endl;
return 0;
}