Submission

Status:

[PPPPPPPP][-SSSSSSS][-SSSSSSSS]

Score: 20

User: pxsit

Problemset: 06.Happiness

Language: cpp

Time: 0.042 second

Submitted On: 2025-03-31 07:58:28

#include <bits/stdc++.h>
using namespace std;
#define endl "\n"
#define ll long long

void solve(){
    int n; cin >> n;
    ll arr[n+1]; arr[0]=0;
    ll dp[n+1]; dp[0]=0;
    priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> pq;
    for(int i = 1; i <= n; i++){
        cin >> arr[i];
        dp[i]=arr[i]+dp[i-1];
        if(arr[i]<0) pq.emplace(arr[i],i);
    }
    // cout << "PASS";
    int cnt = 0;
    ll sum = 0;
    while(!pq.empty()){
        bool valid = true;
        for(int i = 1; i <= n; i++){
            if(dp[i]+sum<0){
                valid = false;
                break;
            }
        }if(valid) break;
        else{
            cnt++;
            sum -= pq.top().first;
            pq.pop();
        }
    }cout << n-cnt;
    return;
}

int main(){
    cin.tie(nullptr)->sync_with_stdio(0);cout.tie(0);
    int t = 1;
    // cin >> t;
    while(t--) solve();
    return 0;
}