Solução Fórmula 1

0 Flares Facebook 0 0 Flares ×

Solução de Roger Benet, comentários de Rogério Júnior

Clique aqui para ver o problema original.

Vamos criar uma struct de nome piloto para representarmos cada um dos pilotos.Ela guardará dois inteiros: pontos e id que deverão representar quantos pontos o piloto fez em um determinado sistema e seu número de identificação, respectivamente. Além disso, ela também guardará um vetor de 100 inteiros de nome pos, que guardará, na posição i, quantas vezes o piloto foi o i-ésimo colocado.

Agora, vamos declarar um vetor de piloto de nome vet, onde vet[i] representa o piloto de identificação i. Primeiramente, percorreremos este vetor, atribuindo o valor correto de identificação ao elemento id de cada posição e zerando os valores de pontos e pos.

Para cada corrida, se o piloto j ficou na posição x, aumentaremos o valor de vet[j].pos[x] em uma unidade. Agora, para cada sistema de pontuação, atribuiremos o número de pontos feito pelo piloto i ao elemento pontos da posição i de vet, da seguinte forma: para cada posição i que dá pontos a um piloto, veremos quantos pontos ela ganha no sistema em que estamos olhando, chamaremos esse valor de x e, para cada piloto j, adicionaremos a seus pontos (salvos no elemento pontos de vet[j])  a quantidade de vezes que ele ficou na posição i (salva no elemento pos[i] de vet[j]) multiplicada pelos x pontos que essa posição dá.

Após atribuirmos a posição correta para cada piloto, basta ordenarmos o vetor vet usando uma função que ordene pela maior quantidade de pontos, usando o menor índice como critério de desempate. Feito isso, imprimimos o identificador do piloto na primeira posição do vetor ordenado (vet[1].id, se indexarmos de 1 a p) e de todos os outros, a partir da segunda posição, que têm pontuação igual à do primeiro, sempre com um espaço em branco antes do número. Feito isso, basta imprimir uma quebra de linha, zerarmos as pontuações de todos os pilotos e analisarmos o próximo sistema de pontuações. Segue o código comentado para melhor entendimento:

0 Flares Facebook 0 0 Flares ×
0 Flares Facebook 0 0 Flares ×
%d bloggers like this: