1940 - Jogo da Estratégia
Mais um dia, mais um problema Ad Hoc...
Descrição
Solução
Para simular a passagem de jogador circularmente (depois que o último jogador jogar, volta para o primeiro), basta fazer a conta x + 1 % n
para descobrir quem será o próximo jogador dado que o jogador atual é x
numa roda de n
jogadores (ver Macetes matemáticos para entender como funciona).
Outro jeito de saber qual é o jogador atual fazendo um for com a variável i
indo de 0
até J * R
é fazer i % J
, pois desse jeito toda vez que i
ultrapassar J
, ele vai rotacionar de volta para o primeiro jogador.
#include <string.h>
#include <stdio.h>
int main()
{
int PV[500];
int J, R, pontos, maior, vencedor;
memset(PV, 0, sizeof(PV));
scanf("%d %d", &J, &R);
R *= J;
for (int i = 0; i < R; ++i)
{
scanf("%d", &pontos);
PV[i % J] += pontos;
}
vencedor = 0;
maior = PV[0];
for (int i = 1; i < J; ++i)
{
if (PV[i] >= maior)
{
vencedor = i;
maior = PV[i];
}
}
printf("%d\n", vencedor + 1);
return 0;
}
Last updated
Was this helpful?