# Vending Machines

**URL:** <https://forum.olinfo.it/t/vending-machines/8491>\
**Category:** Aiuto\
**Created:** [12 Settembre 2023, 4:30pm UTC](https://forum.olinfo.it/t/vending-machines/8491 "2023-09-12T16:30:42Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![efonty](https://forum.olinfo.it/user_avatar/forum.olinfo.it/efonty/32/1647_2.png) [@efonty](https://forum.olinfo.it/u/efonty)\
**Post date:** [12 Settembre 2023, 4:30pm UTC](https://forum.olinfo.it/t/vending-machines/8491/1 "2023-09-12T16:30:42Z")

</div>

```auto
#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

---

<div class="post-metadata">

**Author:** ![Mazza7](https://forum.olinfo.it/user_avatar/forum.olinfo.it/mazza7/32/2689_2.png) [@Mazza7](https://forum.olinfo.it/u/Mazza7)\
**Post date:** [12 Settembre 2023, 6:13pm UTC](https://forum.olinfo.it/t/vending-machines/8491/2 "2023-09-12T18:13:48Z")

</div>

Ciao, il problema sta in questa riga di codice

> [@efonty](#):
>
> ```auto
> saldo-=L[i-1];  
> 
> ```

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

---

<div class="post-metadata">

**Author:** ![efonty](https://forum.olinfo.it/user_avatar/forum.olinfo.it/efonty/32/1647_2.png) [@efonty](https://forum.olinfo.it/u/efonty)\
**Post date:** [13 Settembre 2023, 6:36am UTC](https://forum.olinfo.it/t/vending-machines/8491/3 "2023-09-13T06:36:36Z")

</div>

> [@efonty](#):
>
> #include \<bits/stdc++.h\>  
> using namespace std;  
> int main() {  
> //ifstream cin(“input.txt”);  
> //ofstream cout(“output.txt”);
> 
> ```auto
> 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;
> }
> }
> 
> ```
> 
> }

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

---

<div class="post-metadata">

**Author:** ![Mazza7](https://forum.olinfo.it/user_avatar/forum.olinfo.it/mazza7/32/2689_2.png) [@Mazza7](https://forum.olinfo.it/u/Mazza7)\
**Post date:** [13 Settembre 2023, 11:33am UTC](https://forum.olinfo.it/t/vending-machines/8491/4 "2023-09-13T11:33:30Z")

</div>

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