int Maxarea(int[] predios){ vectorDeAltura = new int[10000]; //Iniciar as variáveis necessárias int alturaAnterior=0; int maxarea = 0; for(int i = 0; i < n ; i++){ //Para cada prédio if(predios[i] < alturaAnterior){ int a = CalcMaxvectorDeAltura();//Calcular o máximo das areas, multiplicar os valores do vectorDeAltura pelas suas chaves, vectorDeAltura[i]*i para (int i =0; i < vectorDeAltura.length; i++). para melhorar o tempo, pôr um break quando vectorDeAltura[i] == 0 if ( a > maxarea) maxarea = a; LimparvectorDeAltura(predios[i]); // põe todos os elementos do vectorDeAltura a zero a partir da posição i (não incluida). para velocidade seguir o mesmo metodo do calcmax } IncvectorDeAltura(predios[i]); // Incrementa todas as posições do vector de altura até predios[i] inclusive alturaAnterior = predios[i]; } int a = CalcMaxvectorDeAltura(); // verificar o máximo para o ultimo conjunto de elementos do vector(é igual ao calcmax do ciclo for...) if ( a > maxarea) maxarea = a; return maxarea; }