模拟赛

发布时间 2023-08-05 17:00:03作者: Jeanny

取数游戏

#include<bits/stdc++.h>
using namespace std;
int n,m,a[55],c[55],ans=-0x7fffffff;
int main(){
	scanf("%d%d",&n,&m);
	for(int i = 1; i <= n; i++) scanf("%d",&a[i]);
	for(int l = 0; l <= n; l++){
		for(int r = l+1; r <= n+1; r++){// error:r<=n, right:r <= n+1 reason:右边一个都不拿走 
			int k = m - (l + (n-r+1));
			if(k < 0) continue; int t = 0;
			memset(c,0,sizeof c);
			for(int i = 1; i <= l; i++) c[++t] = a[i];
			for(int j = r; j <= n; j++) c[++t] = a[j];		
			sort(c+1,c+t+1); int p = 1,sum = 0;
			while(c[p] < 0 && k > 0) p++,k--;
			for(int j = p; j <= t; j++)
				sum += c[j];
			ans = max(ans, sum);
		}	
	}
	cout<<ans<<endl;
	return 0;
}