Aiuto Lotteria di quadri

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 :wink:

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.

ah cacchio

Tranquillo avevo fatto il tuo stesso errore la scorsa settimana :sweat_smile: . 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

Prego, buona serata!

niente da fare, non riesco a superare i 15 /100

Manda il tuo codice qui

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 :sweat_smile:, 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