牛客小白月赛89B代码

#include <bits/stdc++.h>
using namespace std ;

typedef long long int ll ;

ll t , n , s , p ;
int flag ;

int main ( ) {

    cin >> t ;
    for ( ll k = 0 ; k < t ; k ++ ) {
        
        cin >> n ;
        ll a[n] ;
        for ( ll i = 0 ; i < n ; i ++ ) cin >> a[i] ;
        s = 0 ;
        sort ( a , a + n ) ;
        
        if ( a[0] >= 0 ) {
            for ( auto i : a ) s += i ;
            cout << s << endl ;
            continue ;
        }
        
        p = n - 1 ;
        flag = 1 ;
        ll b[n] , c[n] ;
        b[0] = 0 ;
        c[0] = a[0] ;
        
        for ( ll i = 1 ; i < n ; i ++ ) {
            b[i] = b[i - 1] + c[i - 1] * flag ;
            c[i] = a[i] + b[i] ;
            if ( c[i] >= 0 && flag ) {
                p = i ;
                flag = 0 ;
            }
        }
            
        for ( ll i = p ; i < n ; i ++ ) s += c[i] ;
        cout << s << endl ;
        
    }
    
    return 0 ;
}
全部评论

相关推荐

前段时间投boss,实在没绷住,就发出来吧
测开小登的自我救赎:这种就别较真了,感觉应该是那种吃上了学历贬值的时代红利感觉自己也能找一堆92硕士的边角料小公司吧
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务