(3) Nas aulas de educação física, os alunos se dividem em times para jogar partidas alternadamente. A seleção ocorre da seguinte forma:
- Define-se a quantidade de times a serem formados.
- Os alunos são distribuídos de forma alternada entre os times, garantindo uma divisão equilibrada.
A entrada contém um número inteiro N , representando a quantidade de alunos, seguido de um número inteiro T , representando o número de times a serem formados. Nas próximas N linhas, cada linha contém um nome de aluno e um número inteiro H , que representa o nível de habilidade do aluno.
Para cada time, será exibido o termo “Time X”, onde X representa o número do time (1 para o primeiro, 2 para o segundo, e assim por diante). Em seguida, serão listados os nomes dos jogadores pertencentes a esse time. Ao final some as habilidades e retorne qual time é mais forte. Use map na resolução da questão.
Exemplo de entrada:
Entre com a quantidade de alunos: 8
Entre com a quantidade de times: 3
Entre com os alunos o nível de habilidade:
Alice 90
Bruno 85
Carlos 92
Daniel 88
Eduarda 80
Fernanda 95
Gabriel 87
Helena 93
Exemplo de saída:
Time 1
Alice
Daniel
Gabriel
Soma das habilidades: 265
Time 2
Bruno
Eduarda
Helena
Soma das habilidades: 258
Time 3
Carlos
Fernanda
Soma das habilidades: 187
O time mais forte é o Time 1 com 265 pontos.
Entre com a quantidade de times: 3
Entre com os alunos o nível de habilidade:
Alice 90
Bruno 85
Carlos 92
Daniel 88
Eduarda 80
Fernanda 95
Gabriel 87
Helena 93
Alice
Daniel
Gabriel
Soma das habilidades: 265
Time 2
Bruno
Eduarda
Helena
Soma das habilidades: 258
Time 3
Carlos
Fernanda
Soma das habilidades: 187
O time mais forte é o Time 1 com 265 pontos.
Passo 1
Beleza, olha só o que a questão pede:
– Temos N alunos, cada um com um nome e um nível de habilidade H.
– Vamos formar T times distribuindo os alunos “alternadamente” (tipo, 1º vai pro time 1, 2º pro time 2, …, T+1 de novo pro time 1, e por aí vai).
– Depois, pra cada time, a gente lista os nomes, soma as habilidades e diz qual time ficou mais forte (o com maior soma).
Conteúdo envolvido: indexação modular (pra distribuir alternado), estruturas de lista, função map (pra aplicar algo em cada elemento) e soma. Vou mostrar tudinho passo a passo, sem pular teoria.
– Temos N alunos, cada um com um nome e um nível de habilidade H.
– Vamos formar T times distribuindo os alunos “alternadamente” (tipo, 1º vai pro time 1, 2º pro time 2, …, T+1 de novo pro time 1, e por aí vai).
– Depois, pra cada time, a gente lista os nomes, soma as habilidades e diz qual time ficou mais forte (o com maior soma).
Conteúdo envolvido: indexação modular (pra distribuir alternado), estruturas de lista, função map (pra aplicar algo em cada elemento) e soma. Vou mostrar tudinho passo a passo, sem pular teoria.
Passo 2
Primeiro a gente lê e armazena:
- N (quantidade de alunos)
- T (quantidade de times)
- Para cada um dos N alunos, armazenar tuplas
(nome, habilidade)
numa listaalunos
.
Isso é só input e vai servir de base pra distribuir.
Passo 3
Agora a distribuição alternada:
– Cria T listas vazias de nomes e T listas vazias de habilidades, tipo
times_nomes = [[], [], …, []]
times_habs = [[], [], …, []] (cada uma com T sublistas)
– Para o aluno de índice i (começando de i=0), a gente calcula
índice_do_time = i mod T
ou em LaTeX:
– Cria T listas vazias de nomes e T listas vazias de habilidades, tipo
times_nomes = [[], [], …, []]
times_habs = [[], [], …, []] (cada uma com T sublistas)
– Para o aluno de índice i (começando de i=0), a gente calcula
índice_do_time = i mod T
ou em LaTeX:
– Aí coloca o nome em
Isso garante a “alternância” certinha.
times_nomes[time_idx]
e a habilidade em times_habs[time_idx]
.Isso garante a “alternância” certinha.
Passo 4
Chegou a hora de somar as habilidades de cada time usando map. Por exemplo, pro time k:
– Pegamos a lista
– Aplicamos um map só pra converter (caso viesse string) ou deixar como está, e fazemos a soma:
– Pegamos a lista
times_habs[k]
, que é tipo [H_1, H_2, …, H_m]
.– Aplicamos um map só pra converter (caso viesse string) ou deixar como está, e fazemos a soma:
Em código Python seria algo como
Faz isso para todo k de 0 até T−1.
S_k = sum(map(int, times_habs[k]))
.Faz isso para todo k de 0 até T−1.
Passo 5
Pra descobrir qual time é mais forte, a gente pega todos os pares
ou simplesmente vasculhar com um laço comparando as somas.
O resultado é o índice do time mais forte e o valor da soma.
(k, S_k)
e acha aquele com o maior S_k. Em Python dá pra usar:idx_max = max(range(T), key=lambda k: S_k_list[k])
ou simplesmente vasculhar com um laço comparando as somas.
O resultado é o índice do time mais forte e o valor da soma.
Resposta
O time mais forte é o Time 1 com 265 pontos.