Submission

Status:

[PPP-SSSS][-SSSSSSS][-SSSSSSSS]

Score: 0

User: pxsit

Problemset: 06.Happiness

Language: cpp

Time: 0.016 second

Submitted On: 2025-04-17 12:22:01

#include <bits/extc++.h>
#pragma GCC optimize("Ofast,unroll-loops")
#pragma GCC target("avx2,fma,popcnt,lzcnt,bmi,bmi2,abm,sse4.2,f16c,movbe,fsgsbase,tune=native")
//#pragma GCC optimize("Ofast,unroll-loops,fast-math,no-stack-protector,inline-small-functions,inline,unsafe-math-optimizations,omit-frame-pointer,inline-functions-called-once,tree-vectorize,no-trapping-math,tree-loop-optimize,ipa-pta,graphite,peel-loops,tracer,unroll-all-loops,tree-pre,tree-slp-vectorize,tree-loop-distribute-patterns,profile-reorder-functions,vpt")
//#undef _GLIBCXX_DEBUG
//#define NDEBUG
//#pragma GCC target("avx2,fma,popcnt,lzcnt,bmi,bmi2,abm,sse4.2,f16c,movbe,fsgsbase,tune=native")
#ifndef CATOLOGY
#endif
#define fs first
#define nd second
#define spp cout << ' '
#define yes cout << "yes"
#define no cout << "no"
#define YES cout << "YES"
#define NO cout << "NO"
#define Yes cout << "Yes"
#define No cout << "No"
#define min(a, b) (((a) < (b)) ? (a) : (b))
#define max(a, b) (((a) > (b)) ? (a) : (b))
#define all(a) (a).begin(), (a).end()
#define rall(a) (a).rbegin(), (a).rend()
#define forn(i) for(int i=0; i<n; ++i)
#define fork(i) for(int i=0; i<k; ++i)
#define formm(i) for(int i=0; i<m; ++i)
#define fori(i, a) for(int i=1; i<=a; ++i)
#define form(i, a) for(int i=0; i<a; ++i)
#define forr(i, a, n) for (int i = a; i < n; ++i)
#define ford(i,a,n) for (int i = a; i >= n; --i)
#define forv(i, a) for (auto &i : a)
#define endl '\n'
#define endll cout << endl
#define sp ' '
#define pb emplace_back
#define ins insert
#define testcase int t;cin>>t; while (t--)
#define cinn int n;cin>>n
#define cins string s;cin>>s;
#define sortall(a) sort(a.begin(), a.end())
#define rsort(a) sort(a.rbegin(), a.rend())
using namespace std;
typedef long double ld;
typedef long long ll;
typedef unsigned long long ull;
typedef map<int, int> mii;
typedef map<int, string> mis;
typedef pair<int, int> pii;
typedef pair<int, string> pis;
typedef vector<pair<int, int>> vpii;
typedef vector<pair<int, string>> vpis;
typedef vector<vector<int>> vii;
typedef vector<vector<bool>> vbb;
typedef vector<vector<long long>> vvll;
typedef vector<long long> vll;
typedef vector<unsigned long long> vull;
typedef vector<int> vi;
typedef vector<char> vc;
typedef vector<string> vs;
typedef vector<bool> vb;
const int MOD = 1e9 + 7;
const int MODD = 998244353;
const int INF = 2100000000;
const ll LINF = 2167167167167167167;
int d8y[8] = {-1, -1, -1, 0, 0, 1, 1, 1};
int d8x[8] = {-1, 0, 1, -1, 1, -1, 0, 1};
int d4y[4] = {-1, 0, 0, 1};
int d4x[4] = {0, -1, 1, 0};
template<typename T>inline T gcd(T a,T b){while(b){T t=a%b;a=b;b=t;}return a;}
template<typename T>inline T lcm(T a,T b){return a/gcd(a,b)*b;}
ll power(ll x, ll n) {if(n==0)return 1;ll res=1;while(n>0){if(n&1)res*=x;x*=x;n>>=1;}return res;}
ll modpow(ll base,ll exp,ll mod){ll res=1;base%=mod;while(exp>0){if(exp&1)res=(res*base)%mod;base=(base*base)%mod;exp>>=1;}return res;}
bool isprime(ll n){if(n<=1)return false;if(n<=3)return true;if(n%2==0||n%3==0)return false;for(ll i=5;i*i<=n;i+=6)if(n%i==0||n%(i+2)==0)return false;return true;}
template<typename typC,typename typD> istream &operator>>(istream &cin,pair<typC,typD> &a) { return cin>>a.first>>a.second; }
template<typename typC,typename typD> istream &operator>>(istream &cin,vector<pair<typC,typD>> &a) { for (auto &x:a) cin>>x; return cin; }
template<typename typC> istream &operator>>(istream &cin,vector<typC> &a) { for (auto &x:a) cin>>x; return cin; }
template<typename typC,typename typD> ostream &operator<<(ostream &cout,const pair<typC,typD> &a) { return cout<<a.first<<' '<<a.second; }
template<typename typC,typename typD> ostream &operator<<(ostream &cout,const vector<pair<typC,typD>> &a) { for (auto &x:a) cout<<x<<'\n'; return cout; }
template<typename typC> ostream &operator<<(ostream &cout,const vector<typC> &a) { for (auto &x:a) cout<<x<<' '; return cout; }

int32_t main(){ios_base::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);static char stdinbuf[1<<20];std::setvbuf(stdin,stdinbuf,_IOFBF,sizeof(stdinbuf));static char stdoutbuf[1<<20];std::setvbuf(stdout,stdoutbuf,_IOFBF,sizeof(stdoutbuf));
    int n;
    cin >> n;
    int cur=0,cnt = 0;   
    priority_queue<int> pq;
    for(int i=0; i<n; i++){
        int x;
        cin >> x;
        if(x>=0){
            cur += x;
            cnt++;
        }else{
            pq.push(x);
        }
    }
    while(!pq.empty()){
        int x = pq.top();
        pq.pop();
        if(cur + x >= 0){
            cur += x;
            cnt++;
        }else{
            break;
        }
    }
    cout << cnt;
}