Aiuto con Coin Change

Buongiorno, stavo provando a fare il problema Coin Change nell’archivio dei problemi, ma quando lo sottopongo mi da sempre 0/100. Leggendolo mi sembra un problema abbastanza semplice e di conseguenza non riesco veramente a capire cosa sbaglio visto che i due casi che vengono dati mi vengono.

Ho pensato che stessi sbagliando a sottoporlo e magari il sito non riuscisse a leggerlo bene, ma non saprei come risolvere.

Qualcuno potrebbe essere così gentile da guardare il codice e nel caso dirmi se effettivamente sono presenti degli errori?

Grazie

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

// input data
long long V[15];

int main() {
  //  uncomment the following lines if you want to read/write from files
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);

  for (i = 0; i < 15; i++)
    assert(1 == scanf("%lld", &V[i]));

  long long sol[15] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

  float coinValue[15] = {0.01, 0.02, 0.05, 0.10, 0.20, 0.50, 1, 2, 5, 10, 20, 50, 100, 200, 500};

  float sum = 0.0;

  int count;

  for(i = 0; i < 15; i++)
    sum += V[i] * coinValue[i];

  for (i = 0; i < 15; i++) {
    count = 0;

    if (coinValue[14 - i] > sum)
      count = 0;
   else {
     while (sum >= coinValue[14 - i]) {
       sum = sum - coinValue[14 - i];

       count++;
     }
   }

    sol[14 - i] = count;
  }

  for (i = 0; i < 15; i++)
    printf("%lld ", sol[i]);
  printf("\n");
  return 0;
}

Il problema del tuo codice è che utilizzi dati di tipo float che si comportano in modo strano quando assumono valori elevati. Il mio consiglio è di considerare i valori in centesimi di euro così esprimi tutto quanto con variabili di tipo int.

Grazie mille, adesso funziona!