Supondo uma corrida com dois cavalos, vamos tentar selecionar dois cavalos com força semelhante.
Então vocês vão escrever um programa que, usando um determinado número de intensidades, identifique as duas intensidades mais próximas e mostre sua diferença com um número inteiro (≥ 0).
Dica: Para solucionar usei dois laços do tipo “for”. Um “for” para obter os dois cavalos mais fortes e no segundo “for” para descobrir a diferença de força entre eles.
A ideia é ler a entrada da quantidade de cavalos (N) e os valores de força de cada cavalo. Depois, o vetor de forças é ordenado com a função Arrays.sort(). Em seguida, é feita uma iteração pelo vetor de forças, comparando a diferença entre cada par de cavalos consecutivos e mantendo a menor diferença encontrada até o momento. Por fim, é impresso o resultado, que é a diferença entre as forças dos cavalos mais próximas.
O algoritmo mais simples consiste em comparar todos os pares de potências e depois exibir a menor diferença.
No entanto, como o número de valores pode chegar a 100.000 cavalos, comparar todos os pares exigiria bilhões de comparações, o que é demais para passar no último caso de teste.
Melhor abordagem
Para atingir uma pontuação de 100%, é necessário encontrar uma maneira de evitar tantas comparações.
Tente responder à seguinte pergunta: qual modificação dos dados de entrada permitiria encontrar a resposta com um único loop (comparações N-1)?
tenho essa entrada aqui:
import java.util.;
import java.io.;
import java.math.*;
/**
-
Auto-generated code below aims at helping you parse
-
the standard input according to the problem statement.
**/
class Solution {public static void main(String args[]) {
Scanner in = new Scanner(System.in);
int N = in.nextInt();
for (int i = 0; i < N; i++) {
int pi = in.nextInt();
}// Write an answer using System.out.println() // To debug: System.err.println("Debug messages..."); System.out.println("answer");
}
}