Aiuto? Non riesco a trovare il problema

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

int compra(int N, int M, int A, int B) {
    int ans=0;
    int C=2, T;
    if(N*A < B) {
		ans=N*A;
	}else{
		if(N < M) {
		ans=B;	
		}else{
			T=N-M;
			if(B+T*A < 2*B) {
			ans=B+T*A;
			}else{
			while(C*M < N) {
				C=C+1;
			}
			ans=C*B;
			}
			
		}
	}
    return ans;
}

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

Potresti spiegarti meglio? Magari indicando il problema, se hai errori di compilazione, di risultato o di TLE?

Mi da come risultato 10/100. Non riesco a capire dove sbaglio.

Per poterti aiutare sarebbe utile se dicessi il TITOLO del problema, così che possiamo dare un’occhiata e vedere cosa non funziona nella tua implementazione :smiley:

ois_biglietti

Allora, se ti da 10/100 significa che hai fatto solo i casi di esempio (c’è scritto nell’assegnazione del punteggio nel testo del problema). Ciò implica che il tuo algoritmo non è abbastanza generalizzato.
Prova a scrivere il tuo algoritmo tenendo conto di queste domande:

  1. Quando conviene acquistare un carnet?
  2. Quando conviene acquistare solo biglietti singoli?
  3. Quando conviene acquistare un tot di carnet e un tot di biglietti singoli?
    Dimmi come va!

Per la risoluzione di ‘Biglietti a MIlano’ devi considerare più situazioni differenti. Ti trovi in un mondo immaginario dove puoi avere diversi casi. Devi trovare un modo generale per controllare:

a. Quando conviene acquistare tutti biglietti singoli
b. Quando conviene acquistare un pacchetto
c. Quando conviene acquistare tot pacchetti e tot singoli.

Ricorda però: supponi di aver bisogno di 27 biglietti, in una tua ipotetica soluzione potresti considerare di comprare 2 pacchetti e 7 singoli, Attenzione però! Potrebbe essere comunque più conveniente prendere 3 pacchetti.

N*A è da tenere in considerazione non solo nel primo if…

1 Mi Piace