Problem c1 POtions of #723 If i put 4 numbers {2,-2,-1,-1} left code gives ans is 3 and right code gives 2 LEft code
int n; cin >> n; ll arr[n]; set<pair<ll, int>> s1; for (int i = 0; i < n; i++) { cin >> arr[i]; } ll sum = 0; for (int i = 0; i < n; i++) { sum += arr[i]; s1.insert({arr[i], i}); if (sum < 0) { pair<ll, int> p = *s1.begin(); sum -= p.ff; s1.erase(p); } } cout << size(s1) << newline;
Right code
int n; cin >> n; ll arr[n]; set<int> s1; for (int i = 0; i < n; i++) { cin >> arr[i]; } ll sum = 0; for (int i = 0; i < n; i++) { sum += arr[i]; s1.insert(arr[i]); if (sum < 0) { sum -= *s1.begin(); s1.erase(s1.begin()); } } cout << sz(s1) << nline;