Aiuto ois biglietti

Buonasera,
ottengo un punteggio di 80/100. Solamenti gli input del subtask 2, 2 casi non sono corretti. Una mano sarebbe gradita.

#include <stdio.h>
#include <assert.h>
#include

int compra(int N, int M, int A, int B) {
int somma = 0;
int x = 0;
int y = 0;

int distanza_da_ricoprire = N;


while(distanza_da_ricoprire>0) {
        int previsione_prezzo_b = somma + (distanza_da_ricoprire * A);
        int previsione_prezzo_c = (somma - y*B) + ((y+1) * B);
        
        if(previsione_prezzo_b < previsione_prezzo_c) {
            x++;
        } else {
            y++;
        }
        
        distanza_da_ricoprire = N - x - (y*M);
        somma = x*A+(B*y);
}



return somma;

}

int main() {
FILE *fr, *fw;
int N, M, A, B;

fr = fopen("input.txt", "r");
fw = fopen("output.txt", "w");

assert(4 == fscanf(fr, "%d%d%d%d", &N, &M, &A, &B));

fprintf(fw, "%d\n", compra(N, M, A, B));
fclose(fr);
fclose(fw);
return 0;

}