salve a tutti, qualcuno mi potrebbe dire cosa sbaglio in questo programma?
non riesco a superare il secondo subtask e non so proprio dove sbaglio.
Grazie in anticipo.
#include <iostream>
//using namespace std;
void ordina(int array[],int n){
for (int interval = n / 2; interval > 0; interval /= 2) {
for (int i = interval; i < n; i += 1) {
int temp = array[i];
int j;
for (j = i; j >= interval && array[j - interval] > temp; j -= interval) {
array[j] = array[j - interval];
}
array[j] = temp;
}
}
}
int quadri(int N, long long M, int V[]){
ordina(V,N);
long long int somma=0;
int B=0;
int i=N-1;
if(V[i]>M || M==0)
return 0;
if(V[i]==M)
return 1;
while(somma+V[i]<=M && i>=0){
somma+=V[i];
B++;
i--;
}
if(i==0 && somma<M)
return 0;
return B;
}
Sei sicuro di dover riordinare la lotteria dei quadri? Rileggi bene il testo 
be non devi per forza ordinarla, ma lo facevo per comodità
Riordinando la lotteria dei quadri in realtá cambi il risultato del problema, ti viene chiesto qual é il numero massimo di quadri consecutivi che un cliente puó prendere al massimo in base a quella disposizione, non di ottimizzare in un qualche modo il risultato.
Tranquillo avevo fatto il tuo stesso errore la scorsa settimana
. Pensavo a come ottimizzare la sequenza ma poi ho riletto il brano e capito cosa chiedevano.
Avvisami se riesci a risolverlo
1 Mi Piace
sisi, penso però che per stasera stacco, riprenderò domani, grazie intanto per i tuoi aiuti
niente da fare, non riesco a superare i 15 /100
ok, alla fine ho provato a cambiare delle cose ma non è servito a niente, anzi mi dava 0 di punteggio, allora ho solo tolto l’ordinamento e basta e il punteggio è rimasto di 15
#include <iostream>
//using namespace std;
void ordina(int array[],int n){
for (int interval = n / 2; interval > 0; interval /= 2) {
for (int i = interval; i < n; i += 1) {
int temp = array[i];
int j;
for (j = i; j >= interval && array[j - interval] > temp; j -= interval) {
array[j] = array[j - interval];
}
array[j] = temp;
}
}
}
int quadri(int N, long long M, int V[]){
//ordina(V,N);
long long int somma=0;
int B=0;
int i=0;
if(V[i]>M || M==0)
return 0;
if(V[N -1]==M)
return 1;
i=N-1;
while(somma+V[i]<=M && i>=0){
somma+=V[i];
B++;
i--;
}
if( somma==0)
return 0;
return B;
}
Senza commenti e giusta formattazione non riesco a capire il tuo codice
, in generale posso dirti di andarti a vedere questa tecnica: sliding window technique
ok aspe che mando quello più capibile
no niente non riesco a modificare con gli spazi ecc… vabbe lascia stare lo tengo cosi e amen