khuda_ka_banda's blog

By khuda_ka_banda, 3 years ago, In English

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;

Full text and comments »

  • Vote: I like it
  • -13
  • Vote: I do not like it