Coin Change: 31/100 AIUTO

Chiedo aiuto a chiunque riesca a capire perché il programma allegato (c++) non superi tutte le tasks richieste, supera solamente la subtask 1 (esempio) e 3. Credo sia un problema di variabili ma non saprei cosa cambiare

#include <iostream>
#include <vector>
#include <cmath>
#include <fstream>
using namespace std;
int main(){
  ifstream cin("input.txt");
  ofstream cout("output.txt");
	vector <int> monete;           // quante monete e banconote per ogni valuta in input
	vector <int> valute {1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 50000};
	vector <int> resto;            // quante monete e banconote per ogni valuta come risultato
	int m;
	long long int tot = 0;
	
	for (int i = 0; i < 15; i++){           // richiesta in input delle monete e banconete
		cin >> m;
		monete.push_back(m);
		tot += monete[i]*valute[i];         // calcolo somma delle monete e banconote
	}
	for (int i = 14; i >= 0; i--){                          // calcolo di monete e banconote minime per ogni valuta
	    int monete_per_valuta = floor(tot/valute[i]);
	    resto.push_back(monete_per_valuta);
	    tot -= valute[i]*monete_per_valuta;
	}
	for (int i = 14; i >= 0; i--){
	    cout << resto[i] << " ";                // stampa risultato
	}
}

prova a mettere long long monete_per_valuta e gli altri int
edit: così il tuo codice prende 100, secondo me ha creato problemi il vector resto.

grazie millle, ho capito che è meglio evitare numeri con virgole