POJ2479

来源:互联网 发布:linux expect sftp 编辑:程序博客网 时间:2024/06/03 17:32
#include "stdio.h"#define MAXN 50000int a[ MAXN ];int lmax[ MAXN ];int rmax[ MAXN ];int ldp[ MAXN ];int rdp[ MAXN ];int n;void init(){ldp[ 0 ] = a[ 0 ];lmax[ 0 ] = ldp[ 0 ];for(int i = 1; i < n; i ++){if(ldp[ i - 1 ] + a[ i ] < a[ i ]){ldp[ i ] = a[ i ];}else{ldp[ i ] = ldp[ i - 1 ] + a[ i ];}if(ldp[ i ] > lmax[ i - 1 ]){lmax[ i ] = ldp[ i ];}else{lmax[ i ] = lmax[ i - 1 ];}}rdp[ n - 1 ] = a[ n - 1 ];rmax[ n - 1 ] = rdp[ n - 1 ];for(int i = n - 2; i >= 0; i --){if(rdp[ i + 1 ] + a[ i ] < a[ i ]){rdp[ i ] = a[ i ];}else{rdp[ i ] = rdp[ i + 1 ] + a[ i ];}if(rdp[ i ] > rmax[ i + 1 ]){rmax[ i ] = rdp[ i ];}else{rmax[ i ] = rmax[ i + 1 ];}}}int main(){int T;scanf("%d", &T);while(T > 0){scanf("%d", &n);for(int i = 0; i < n; i ++){scanf("%d", &a[ i ]);}init();int max = -10000;for(int i = 0; i < n - 1; i ++){if(lmax[ i ] + rmax[ i + 1 ] > max){max = lmax[ i ] + rmax[ i + 1 ];}}printf("%d\n", max);T --;}return 0;}
注意:使用cout,cin超时
原创粉丝点击