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.

O critério de desempate é decidido pelo jogador de maior número.

#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