Tarea EDA 3.1

mail@pastecode.io avatar
unknown
java
2 years ago
3.0 kB
2
Indexable
Never
package tarea3_1; 

import java.util.*;

public class Tarea3_1 {
    public static void main(String[] args) {
        //ingreso numero test  
        Scanner a = new Scanner(System.in);  
        int test = a.nextInt();  
        
        for (int i = 0; i < test; i++) {
            //ingreso numero torres y alturas
            Scanner b = new Scanner(System.in);  
            int torres = b.nextInt();  

            Scanner c = new Scanner(System.in);  
            String altoTorres = c.nextLine();  
            String aux=altoTorres;

            //guardar alturas en array de string
            String[] arrayAlturas= aux.split(" ");

            //convertir array string a array int
            int[] arrayNAlturas;
            arrayNAlturas=new int[torres];
            for (int x = 0; x < arrayAlturas.length; x++) {
                int temp = Integer.valueOf(arrayAlturas[x]);
                arrayNAlturas[x]=temp;
            }
            
            //calculo de torres que ve cada guardia
            int[] guardias=new int[torres];;
            int torrealta=0;
            
            for (int j = 0; j < torres; j++) {
                if(j==0){
                    guardias[j]=1;
                    torrealta=arrayNAlturas[j];
                }
                else if(arrayNAlturas[j]<arrayNAlturas[j-1]){
                    guardias[j]=1;
                }
                else if(arrayNAlturas[j]==arrayNAlturas[j-1]){
                    if(arrayNAlturas[j]<torrealta){
                        guardias[j]=arrayNAlturas[j-1]+1;
                    }
                    else if(arrayNAlturas[j]==torrealta){
                        guardias[j]=j+1;
                    }
                    else{
                        guardias[j]=j+1;
                        torrealta=arrayNAlturas[j];
                    }
                }
                else{
                    if(arrayNAlturas[j]<torrealta){
                        guardias[j]=arrayNAlturas[j]+1;
                        int count=0;
                        for (int k = j-1; k >=0; k--) {
                            if(arrayNAlturas[j]>=arrayNAlturas[k]){
                                count++;
                            }
                            else{
                                break;
                            }  
                        }
                        guardias[j]=count+1;
                    }
                    else if(arrayNAlturas[j]==torrealta){
                        guardias[j]=j+1;
                    }
                    else{
                        guardias[j]=j+1;
                        torrealta=arrayNAlturas[j];
                    }
                }
            }
            //imprime guardias
            for (int j = 0; j < torres; j++) {
                System.out.print(guardias[j]+" ");
            }
        }
        
    }
}