提交时间:2023-08-14 12:24:29
运行 ID: 98165
#include <iostream> using namespace std; bool c[1000000]; int a[1000000]; int n,k,x,s=0; void get(){ for(int i=0;i<n;i+=1){ if(c[i]){ a[i]+=x; }else{ a[i]-=x; } } int newS=0; for(int l=0;l<n;l+=1){ for(int r=l;r<n;r+=1){ for(int i=l;i<=r;i+=1){ newS+=a[i]; } if(newS>s){ s=newS; } newS=0; } } for(int i=0;i<n;i+=1){ if(c[i]){ a[i]-=x; }else{ a[i]+=x; } } } void d(int will,int gb){ if(gb==n){ c[gb]=false; return; } if(will==0){ get(); c[gb]=false; c[gb+1]=true; d(will,gb+1); }else{ c[gb]=true; d(will-1,gb+1); c[gb]=false; d(will,gb+1); } c[gb]=false; return; } int main(){ cin>>n>>k>>x; for(int i=0;i<1000000;++i){ c[i]=false; } for(int i=0;i<n;++i){ cin>>a[i]; } d(k-1,0); cout<<s; return 0; }