Aiuto biglietti a Milano

Sono riuscita a risolvere questo problema molto semplice solo che quando provo ad eseguirlo ci mette 2 o anche 3 secondi. Di conseguenza quando provo a sottoporlo mi da 0/100 perché supero il tempo limite. Qualcuno mi saprebbe dire dove sbaglio?
Grazie in anticipo a chiunque mi possa dare un suggerimento.

Questo è il codice:
Io ho scritto solo il corpo della funzione compra, il file l’ho scaricato dall’esercizio.

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

int compra(int N, int M, int A, int B) {
    int sol=0;
    sol=N/M*B;
    sol=sol+(N%M*A);
    return sol;
}

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;
}

Ho sottoposto il tuo codice, ma il problema non è il tempo di esecuzione, il programma sbaglia gran parte dei testcase. Per risolvere il problema dovresti avere un approccio greedy, che il tuo codice non ha. Magari prova ad avere un approccio diverso, considerando se ti conviene comprare biglietti in blocchi di carnet o se in modo singolo

prima cosa al posto di prendere gli ultimi bigletti singoli di costo N%M*A a sol potresti anche prendere un ultimo carnet di costo B che potrebbe diminuire la spesa.
seconda cosa, potresti anche prendere solo biglietti singoli.

Grazie mille per i consigli, sono finalmente riuscita a risolvere il problema.
Adesso ho capito dove sbagliavo