Submission 1
#include <bits/stdc++.h>
using namespace std;
#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("unroll-loops")
//#pragma GCC optimize("Ofast")
// #pragma GCC optimize "trapv"
#define ll long long
#define lld long double
int32_t main() {
// your code goes here
ios_base::sync_with_stdio(false);
cin.tie(NULL);
lld t;
//cin>>t;
t=1;
while(t--)
{
int n;
cin>>n;
int arr[n+1];
for(int i=1;i<=n;i++)
cin>>arr[i];
multiset <int> s;
ll sum=0;
for(int i=1;i<=n;i++)
{
if(arr[i]>=0)
{
sum+=arr[i];
s.insert(arr[i]);
}
else
{
if(sum+arr[i]>=0)
{
sum+=arr[i];
s.insert(arr[i]);
}
else
{
ll val=*s.begin();
if(sum-val+arr[i]>0)
{
s.erase(s.find(val));
s.insert(arr[i]);
sum=sum-val+arr[i];
}
}
}
}
cout<<s.size();
}
}
Submission 2
#include <bits/stdc++.h>
using namespace std;
#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("unroll-loops")
//#pragma GCC optimize("Ofast")
// #pragma GCC optimize "trapv"
#define ll long long
#define lld long double
int32_t main() {
// your code goes here
ios_base::sync_with_stdio(false);
cin.tie(NULL);
lld t;
//cin>>t;
t=1;
while(t--)
{
int n;
cin>>n;
int arr[n+1];
for(int i=1;i<=n;i++)
cin>>arr[i];
multiset <int> s;
ll sum=0;
for(int i=1;i<=n;i++)
{
if(arr[i]>=0)
{
sum+=arr[i];
s.insert(arr[i]);
}
else
{
if(sum+arr[i]>=0)
{
sum+=arr[i];
s.insert(arr[i]);
}
else
{
auto it=s.begin();
ll val=*it;
if(val<arr[i])
{
s.erase(it);
s.insert(arr[i]);
sum=sum-val+arr[i];
}
}
}
}
cout<<s.size();
}
}
Both submission only differs only at last if condition. Both seems same to me. But submission 1 gives WA on TC3 while submission 2 is AC.
Submission 1 gives 1784 instead of 1785 on TC3
Please provide some TC so that I can see difference.