p2592.cpp

来自「高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程」· C++ 代码 · 共 46 行

CPP
46
字号
#include <stdio.h>

#define MAX 200000

int     N , Sum;
int     Num [MAX] , RightMin [MAX] , LeftMax;

int     Answer ()
{
        int     i;
        int     ret;
        
        scanf ( "%d" , &N );
        Sum = 0;
        for ( i = 0; i < N; i ++ ) {
                scanf ( "%d" , &Num [i] );
                Sum += Num [i];
        }

        RightMin [N - 1] = Num [N - 1];
        for ( i = N - 2; i >= 0; i -- ) {
                if ( RightMin [i + 1] >= 0 ) RightMin [i] = 0; else RightMin [i] = RightMin [i + 1];
                RightMin [i] += Num [i];
        }

        LeftMax = Num [0];
        if ( RightMin [0] > 0 ) ret = 1; else ret = 0;

        for ( i = 1; i < N; i ++ ) {
                if ( Sum > LeftMax && RightMin [i] > 0 ) ret ++;
                if ( LeftMax < 0 ) LeftMax = 0;
                LeftMax += Num [i];
        }
        return ret;
}

main ()
{
        freopen ( "p.in" , "r" , stdin );
        freopen ( "p.out" , "w" , stdout );
        
        int     total;
        for ( scanf ( "%d" , &total ); total; total -- )
                printf ( "%d\n" , Answer () );
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?