#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
template < class S, class T> inline S chmax( S & a, T b) {
if ( a< b) {
a= b;
}
return a;
}
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
int N;
int A[ 50000 ] ;
int dp[ 50000 ] ;
int sm[ 50001 ] ;
int solve( int dep) {
int i;
int res = - 1073709056 ;
int tmp = 0 ;
if ( dep >= N) {
return 0 ;
}
if ( dp[ dep] ! = - 1073709056 ) {
return dp[ dep] ;
}
for ( i= ( 0 ) ; i< ( 3 ) ; i++ ) {
if ( dep + i >= N) {
break ;
}
tmp + = A[ dep + i] ;
chmax( res, tmp + sm[ dep + i + 1 ] - solve( dep + i + 1 ) ) ;
}
return dp[ dep] = res;
}
class Solution{
public :
string stoneGameIII( vector< int > & stone) {
int i;
int alice;
int bob;
N = stone.size ( ) ;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
A[ i] = stone[ i] ;
}
sm[ N] = 0 ;
for ( i= ( N) - 1 ; i>= ( 0 ) ; i-- ) {
sm[ i] = sm[ i+ 1 ] + A[ i] ;
}
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
dp[ i] = - 1073709056 ;
}
alice = solve( 0 ) ;
bob = sm[ 0 ] - alice;
if ( alice > bob) {
return "Alice" ;
}
else if ( alice < bob) {
return "Bob" ;
}
else {
return "Tie" ;
}
}
}
;
// cLay varsion 20200408-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// int N, A[50000];
// int dp[50000], sm[50001];
//
// int solve(int dep){
// int res = -int_inf, tmp = 0;
// if(dep >= N) return 0;
// if(dp[dep] != -int_inf) return dp[dep];
//
// rep(i,3){
// if(dep + i >= N) break;
// tmp += A[dep + i];
// res >?= tmp + sm[dep + i + 1] - solve(dep + i + 1);
// }
//
// return dp[dep] = res;
// }
//
// class Solution {
// public:
// string stoneGameIII(vector<int>& stone) {
// int alice, bob;
// N = stone.size();
// rep(i,N) A[i] = stone[i];
//
// sm[N] = 0;
// rrep(i,N) sm[i] = sm[i+1] + A[i];
//
// rep(i,N) dp[i] = -int_inf;
// alice = solve(0);
// bob = sm[0] - alice;
//
// return if[alice > bob, "Alice", alice < bob, "Bob", "Tie"];
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnRlbXBsYXRlPGNsYXNzIFMsIGNsYXNzIFQ+IGlubGluZSBTIGNobWF4KFMgJmEsIFQgYil7CiAgaWYoYTxiKXsKICAgIGE9YjsKICB9CiAgcmV0dXJuIGE7Cn0KI2RlZmluZSBtYWluIGR1bW15X21haW4KaW50IG1haW4oKXsKICByZXR1cm4gMDsKfQojdW5kZWYgbWFpbgppbnQgTjsKaW50IEFbNTAwMDBdOwppbnQgZHBbNTAwMDBdOwppbnQgc21bNTAwMDFdOwppbnQgc29sdmUoaW50IGRlcCl7CiAgaW50IGk7CiAgaW50IHJlcyA9IC0xMDczNzA5MDU2OwogIGludCB0bXAgPSAwOwogIGlmKGRlcCA+PSBOKXsKICAgIHJldHVybiAwOwogIH0KICBpZihkcFtkZXBdICE9IC0xMDczNzA5MDU2KXsKICAgIHJldHVybiBkcFtkZXBdOwogIH0KICBmb3IoaT0oMCk7aTwoMyk7aSsrKXsKICAgIGlmKGRlcCArIGkgPj0gTil7CiAgICAgIGJyZWFrOwogICAgfQogICAgdG1wICs9IEFbZGVwICsgaV07CiAgICBjaG1heChyZXMsIHRtcCArIHNtW2RlcCArIGkgKyAxXSAtIHNvbHZlKGRlcCArIGkgKyAxKSk7CiAgfQogIHJldHVybiBkcFtkZXBdID0gcmVzOwp9CmNsYXNzIFNvbHV0aW9uewogIHB1YmxpYzoKICBzdHJpbmcgc3RvbmVHYW1lSUlJKHZlY3RvcjxpbnQ+JiBzdG9uZSl7CiAgICBpbnQgaTsKICAgIGludCBhbGljZTsKICAgIGludCBib2I7CiAgICBOID0gc3RvbmUuc2l6ZSgpOwogICAgZm9yKGk9KDApO2k8KE4pO2krKyl7CiAgICAgIEFbaV0gPSBzdG9uZVtpXTsKICAgIH0KICAgIHNtW05dID0gMDsKICAgIGZvcihpPShOKS0xO2k+PSgwKTtpLS0pewogICAgICBzbVtpXSA9IHNtW2krMV0gKyBBW2ldOwogICAgfQogICAgZm9yKGk9KDApO2k8KE4pO2krKyl7CiAgICAgIGRwW2ldID0gLTEwNzM3MDkwNTY7CiAgICB9CiAgICBhbGljZSA9IHNvbHZlKDApOwogICAgYm9iID0gc21bMF0gLSBhbGljZTsKICAgIGlmKGFsaWNlID4gYm9iKXsKICAgICAgcmV0dXJuICJBbGljZSI7CiAgICB9CiAgICBlbHNlIGlmKGFsaWNlIDwgYm9iKXsKICAgICAgcmV0dXJuICJCb2IiOwogICAgfQogICAgZWxzZXsKICAgICAgcmV0dXJuICJUaWUiOwogICAgfQogIH0KfQo7Ci8vIGNMYXkgdmFyc2lvbiAyMDIwMDQwOC0xCgovLyAtLS0gb3JpZ2luYWwgY29kZSAtLS0KLy8gI2RlZmluZSBtYWluIGR1bW15X21haW4KLy8ge30KLy8gI3VuZGVmIG1haW4KLy8gCi8vIGludCBOLCBBWzUwMDAwXTsKLy8gaW50IGRwWzUwMDAwXSwgc21bNTAwMDFdOwovLyAKLy8gaW50IHNvbHZlKGludCBkZXApewovLyAgIGludCByZXMgPSAtaW50X2luZiwgdG1wID0gMDsKLy8gICBpZihkZXAgPj0gTikgcmV0dXJuIDA7Ci8vICAgaWYoZHBbZGVwXSAhPSAtaW50X2luZikgcmV0dXJuIGRwW2RlcF07Ci8vIAovLyAgIHJlcChpLDMpewovLyAgICAgaWYoZGVwICsgaSA+PSBOKSBicmVhazsKLy8gICAgIHRtcCArPSBBW2RlcCArIGldOwovLyAgICAgcmVzID4/PSB0bXAgKyBzbVtkZXAgKyBpICsgMV0gLSBzb2x2ZShkZXAgKyBpICsgMSk7Ci8vICAgfQovLyAKLy8gICByZXR1cm4gZHBbZGVwXSA9IHJlczsKLy8gfQovLyAKLy8gY2xhc3MgU29sdXRpb24gewovLyBwdWJsaWM6Ci8vICAgc3RyaW5nIHN0b25lR2FtZUlJSSh2ZWN0b3I8aW50PiYgc3RvbmUpIHsKLy8gICAgIGludCBhbGljZSwgYm9iOwovLyAgICAgTiA9IHN0b25lLnNpemUoKTsKLy8gICAgIHJlcChpLE4pIEFbaV0gPSBzdG9uZVtpXTsKLy8gCi8vICAgICBzbVtOXSA9IDA7Ci8vICAgICBycmVwKGksTikgc21baV0gPSBzbVtpKzFdICsgQVtpXTsKLy8gCi8vICAgICByZXAoaSxOKSBkcFtpXSA9IC1pbnRfaW5mOwovLyAgICAgYWxpY2UgPSBzb2x2ZSgwKTsKLy8gICAgIGJvYiA9IHNtWzBdIC0gYWxpY2U7Ci8vIAovLyAgICAgcmV0dXJuIGlmW2FsaWNlID4gYm9iLCAiQWxpY2UiLCBhbGljZSA8IGJvYiwgIkJvYiIsICJUaWUiXTsKLy8gICB9Ci8vIH07Cg==