辣鸡题。。
#include <cstdio>
int n,ST,ma;
bool dp[60][1010];
int a[60];
int read_int () {
char c = getchar();
int re = 0;
for(;c > '9' || c < '0';c = getchar());
for(;c >= '0' && c <= '9';c = getchar())
re = re * 10 + c - '0';
return re;
}
int main () {
n = read_int();
ST = read_int();
ma = read_int();
for(int i = 1;i <= n;++i)
a[i] = read_int();
if(ST + a[1] <= ma && ST + a[1] >= 0)
dp[1][ST + a[1]] = 1;
if(ST - a[1] <= ma && ST - a[1] >= 0)
dp[1][ST - a[1]] = 1;
for(int i = 1;i <= n - 1;++i) {
for(int j = 0;j <= ma;++j) {
if(dp[i][j]) {
if(j + a[i + 1] <= ma && j + a[i + 1] >= 0)
dp[i + 1][j + a[i + 1]] = 1;
if(j - a[i + 1] <= ma && j - a[i + 1] >= 0)
dp[i + 1][j - a[i + 1]] = 1;
}
}
}
int ans = -1;
for(int i = 0;i <= ma;++i)
if(dp[n][i])
ans = i;
printf("%d\n",ans);
}