Aiuto con Bustine di carte

Buonasera a tutti.
Stavo cercando di risolvere Bustine di carte, e nonostante il mio codice totalizzi 100/100, volevo diminuire un po’ il tempo di esecuzione.

Il codice utilizzato è il seguente:


#include <vector>

using namespace std;

int scarta(int M, vector<bool> L, vector<bool> D, vector<bool> N){
    char sum=0;
    int nCarteRimaste=0;
	for(int i=0; i<M; i++){
        sum=L[i]+D[i]+N[i];
        nCarteRimaste+=(sum!=1);
    }
    return nCarteRimaste;
}

Inizialmente ho attribuito la causa del tempo impiegato (50ms) al fatto che i std::vector<bool> venissero passati per valore, e quindi venissero copiati ogni volta. Ho provato a passarli per riferimento (con &) ma purtroppo mi va in errore di compilazione.
Qualcuno mi saprebbe aiutare?

EDIT: Ho anche provato a dichiarare scarta come inline int anziché solamente int, ma ottengo un errore di compilazione comunque.

Nel grader la funzione scarta ha una sua definizione, che deve essere rispettata nella tua implementazione e viene invece ignorata se tu cambi i parametri della funzione.
Perché ti interessa così tanto diminuire il tempo d’esecuzione comunque?

1 Mi Piace

Niente di particolare. Volevo solamente mettermi alla prova :slight_smile: . Più che altro avevo visto qualcuno nelle statistiche che impiegava un tempo notevolmente migliore, e volevo cercare di capire come avessero fatto, specialmente con un grader dove non puoi modificare il prototipo della funzione.