http://blog.csdn.net/u010690055/article/details/10295541
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
const int MAX=1e6+10;
int p[MAX];
int dp[MAX];
int he[MAX];
int main()
{
int n,a,b;
int i,j,k;
while(scanf("%d%d%d",&n,&a,&b)!=EOF){
int sum=a+b;
int temp=0,f=0;
k=n;
memset(he,0,sizeof(he));
for(i=1;i<=n;i++){
scanf("%d",&p[i]);
he[i]=he[i-1]+p[i];
if(he[i]>sum && f==0) {k=i-1; f=1;}
}
dp[k]=p[k];
for(i=k-1;i>=1;i--){
int ta=dp[i+1]+p[i];
int tb=sum-he[i-1]-(dp[i+1]-1);
dp[i]=ta<tb?ta:tb;
}
if(a>=dp[1]) printf("ALICE\n");
else printf("BOB\n");
}
}