rt
为什么别人的n2吸了氧能过,xdm能帮我卡常吗
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=100005;
const int maxm=10005;
inline int read()
{
int x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
return x*f;
}
struct node{
int l,r,f;
};
deque<node> q;
int a[maxn],n,f[maxn],s[maxn],p[maxn],l[maxn],cnt;
inline int calc(int j,int i)
{
cnt=s[i]-s[j]+1;
return a[i]*cnt*cnt;
}
/*
{
f[i]=f[j]+calc(j+1,i);
calc=max(a[k]*count(k)*count(k))
}
*/
signed main()
{
n=read();
for(int i=1;i<=n;++i)
{
a[i]=read();
s[i]=s[p[a[i]]]+1;
l[i]=p[a[i]];
p[a[i]]=i;
for(int j=i;j;j=l[j])
{
f[i]=max(f[i],f[j-1]+calc(j,i));
}
}
// for(int i=1;i<=n;++i) cout<<d[i]<<endl;
cout<<f[n];
}