我的第N个问题

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;
}

3 个赞