Aiuto con Rifornimento ai Distributori

Ho un problema con il mio codice, ottengo solo 10 su 100, a causa di molti output sbagliati, ma io non riesco a capire dove sia l’errore. Questo è il codice.

#include <iostream>
using namespace std;
int main(){
   freopen("input.txt","r",stdin);
   freopen("output.txt","w",stdout);
   int n,m,k;
   cin>>n>>m>>k;
   int stazioni[n];
   int benzina=m;
   for(int i=0;i<n;i++)cin>>stazioni[i];
   int tot=0;
   benzina-=stazioni[0];
   for(int i=1;i<n;i++){
      if(benzina+stazioni[i-1]<=stazioni[i]){
         tot++;
         benzina=m-(stazioni[i]-stazioni[i-1]);
      }else{
         benzina-=stazioni[i]-stazioni[i-1];
      }
   }
   cout<<tot;
}

Senza una riga di commento non è facile capire la logica del codice inoltre
leggi k (la lunghezza totale del percorso) ma poi non la utilizzi per controllare l’arrivo. (se m>=k non c’è neanche bisogno di far benzina).
Comunque cerca una logica più semplice per capire dove far benzina e calcolare la strada fatta.