Vending Machines

#include <bits/stdc++.h>
using namespace std;
int main() {
     //ifstream cin("input.txt");
     //ofstream cout("output.txt");

    int T;
    cin >> T;

    for (int t = 0; t < T; ++t) {
        int N, Q;
        cin >> N >> Q;

        vector<int> P(N), L(Q);
        for (int i = 0; i < N; i++) {
            cin >> P[i];
        }
        int saldo=0;
        bool hacker = false;
        for (int i = 0; i < Q; i++) {
            cin >> L[i];
            if(L[i]>=0) saldo+=L[i];
            else
            {
                saldo-=L[i-1];
            }
            if (saldo<0)
            {
                hacker=true;
            }
        }
        if (hacker) {
            cout << "HACKER" << endl;
        } else {
            cout << "OK" << endl;
        }
    }
}

Sto usando questo codice per risolvere il problema. Quando eseguo sulla mia macchina in locale input01.txt l’output che ottengo è uguale a quello atteso, però quando faccio la sottoposizione fallisce su quello stesso input

Ciao, il problema sta in questa riga di codice

gli elementi negativi non corrispondono all’importo da sottrarre, ma all’elemento comprato.
Quindi devi sottrarre il valore corrispondente del vettore P.

Si hai totalmente ragione, mi era sfuggito che stavo usando il vettore sbagliato. Però strano comunque che il risultato corrispondesse sulla mia macchina e non nelle sottoposizioni.
Grazie mille comunque

Il risultato era diverso perché se il primo numero era negativo accedevi a L[-1], che è inizializzato a caso.