寄了,求调(WA+RE0pts)
查看原帖
寄了,求调(WA+RE0pts)
760548
Jerry114514楼主2024/7/23 16:50
#include<cmath>
#include<cstdio>
#include<algorithm>
#define PII pair<int,int>
#define fir first
#define sec second
using namespace std;
const int N=2010;
int n,sum,res=-0x3f3f3f3f;
//int l,r;//左边减了多少and右边减了多少
int s[N],s1[N];
inline PII find(){
	PII c;
	c.fir=s1[sum+1];
	for(int i=1;i<=n;i++){
		if(s[i]==c.fir){
			c.sec=i;
		}
	}
	return c;
}
inline void dfs(int l,int r,int ans){
	if(sum==n){
		res=max(res,ans);
	}
	auto ret=find();
	sum++;
	dfs(l+1,r,ans+abs(l+1-ret.sec)*ret.fir);
	sum--;
	sum++;
	dfs(l,r-1,ans+abs(r-1-ret.sec)*ret.fir);
	sum--;
	return ;
}
signed main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&s[i]);
		s1[i]=s[i];
	}
	sort(s1+1,s1+n+1,[&](int x,int y){
		return x>y;
	});
	dfs(1,n,0);
	printf("%d",res);
	return 0;
}
/*
下标:1 2 3 4 5 6 7 8
数字:1 2 4 5 6 3 8 7
LR序:1 2 3 4 5 6 7 8(L)
     8 7 6 5 4 3 2 1(R)
倒序:8 7 6 5 4 3 2 1
*/
2024/7/23 16:50
加载中...