【题解】洛谷 P7286 「EZEC-5」人赢
分析 + 题解
首先,
其次,对于
时间复杂度:
代码
实际实现时,可将前缀
#include<bits/stdc++.h>
using namespace std;
const int max_n=1e6+5;
int k[max_n],id[max_n];
inline bool cmp(int x,int y)//按 k 值从大到小对编号排序
{
return k[x]>k[y];
}
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;++i)
{
scanf("%d",k+i);
id[i]=i;
}
sort(id+1,id+n+1,cmp);
int Max=0;
long long ans=0;//记得开 long long
for(int i=1;i<=n;++i)
{
ans=max(ans,1ll*k[id[i]]*(id[i]+Max));
Max=max(Max,id[i]);//注意要先更新 ans 再更新 Max
}
printf("%lld\n",ans);
return 0;
}