Rescaling sequence 35/100

Salve, provando a risolvere il problema ottengo soltanto 35 punti.
Il codice è il seguente:

using namespace std;

int main(){
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
	int n,m=0;
	cin>>n;
	int v[n],lunghezza[n];
	for(int i=0;i<n;i++) cin>>v[i];
	for(int i=0;i<n;i++){
		lunghezza[i]=1;
		for(int j=0;j<i;j++){
			if(v[j]>v[i] || v[i]%v[j]==0){
				lunghezza[i]=max(lunghezza[i],lunghezza[j]+1);
				if(lunghezza[i]>m) m=lunghezza[i];
				}
		}
	}
	cout<<n-m;
	return 0;	
}

Per risolverlo trovo la più lunga sequenza che rispetta le condizioni date dal testo del problema, per poi ricavare i termini da cancellare sottraendo il numero di termini della più lunga sequenza valida trovata dal numero totale di termini.
Grazie.

Ciao, l’idea è giusta, solo che devi inizializzare m a 1 anziché 0.

6 Mi Piace

Grazie per la risposta.