```
#include <iostream>
using namespace std;
int N;
int start,maxv;
int f1[501],f0[501]; //f1[i]为第i首歌增加音量时第i首歌的最大音量,f0[i]为减小音量的 第i首歌的最大音量
int main() {
cin>>N>>start>>maxv;
int change;
f1[0]=start;
f0[0]=start; //初始化
for(int i=1;i<=N;i++) {
cin>>change;
bool flag=false;
if(f1[i-1]+change<=maxv && f1[i-1]!=-1) {
f1[i]=max(f1[i],f1[i-1]+change);
flag=true;
}
if(f0[i-1]+change<=maxv && f0[i-1]!=-1) {
f1[i]=max(f1[i],f0[i-1]+change);
flag=true;
}
if(!flag) f1[i]=-1;
flag=false;
if(f1[i-1]-change>=0 && f1[i-1]!=-1) {
f0[i]=max(f0[i],f1[i-1]-change);
flag=true;
}
if(f0[i-1]-change>=0 && f0[i-1]!=-1) {
f0[i]=max(f0[i],f0[i-1]-change);
flag=true;
}
if(flag==false) f0[i]=-1;
if(f1[i]==-1 && f0[i]==-1) {
cout<<-1;
return 0;
}
}
cout<<max(f1[N],f0[N]);
return 0;
}
```
by 逝星DS @ 2018-08-16 19:40:43