Auito con Investing in Stocks

Salve a tutti, sto cercando di risolvere il problema investing in stocks, ma il mio codice continua a produrre 0/100 risolvendo solo pochi casi. Potreste suggerirmi in cosa è sbagliato il mio approccio?
Allego qui il mio codice in c++:

#include <bits/stdc++.h>
#include <stdio.h>
using namespace std;
typedef long long ll;

void solve()
{
ll n,best = 0, sum = 0, last = -1;
cin >> n;

ll arr[n],s[n];

for(ll i = 0; i < n; i++) cin >> arr[i];
for(ll i = 0; i < n; i++) cin >> s[i];

for(ll i = 0; i < n; i++)
{
    if(s[i] == 1)
    {
        if(i == 0 || last == -1)
        {
            sum = last = arr[i];
        }
        else if(arr[i] >= last)
        {
            sum+=arr[i];
            last = arr[i];
        }
        else
        {
            best = max(best,sum);
            sum = 0;
            last = -1;
        }
    }
    else
    {
        best = max(best,sum);
        sum=0;
        last = -1;
    }

}

best = max(best,sum);

printf("%lld\n",best);

}

int main()
{
ios::sync_with_stdio(false);
cin.tie(0);

int t = 1;
//cin >> t;

while(t--)
{
    solve();
    printf("\n");
}

}

Riepilogo

Questo testo verrà nascosto

Rivedi la gestione del caso in cui un importo associato ad un S=1 è minore del precedente:

if(arr[i] >= last)
{
sum+=arr[i];
last = arr[i];
}
else
{
best = max(best,sum);
sum = 0;
last = -1;
}

sistema quello e hai fatto 100.

Ci sono riuscito! Grazie mille :smiley: