Programação Competitiva

Corrida [maratona]

A Federação de Corridas de Charrete (FCC) organiza todo ano a Subida Brigite Cardoso (SBC), disputada nas ladeiras de paralelepípedo de Ouro Preto. A corrida é uma das mais tradicionais do esporte, completando 100 anos em 2013. Para comemorar o centenário, a FCC pretende integrar dispositivos GPS às charretes, permitindo aos espectadores desfrutarem de dados de telemetria em tempo real.

No mesmo viés de inovação tecnológica, a FCC transmitirá a SBC via satélite para todo o planeta, e quer integrar a telemetria na transmissão, indicando qual seria o vencedor da corrida se as charretes mantivessem suas velocidades até o final da corrida; ela pediu que você escrevesse um programa que, dados as distâncias até a linha de chegada, as velocidades e os números das duas charretes que lideram a corrida, determina quem seria o vencedor da corrida (você pode supor que as charretes não cruzam a linha de chegada simultaneamente).

A entrada consiste de duas linhas; cada linha descreve uma das charretes que lidera a corrida. A descrição de uma charrete consiste de três inteiros N, D e V indicando, respectivamente, o número da charrete, a sua distância à linha de chegada em metros, e a sua velocidade, em quilômetros por hora. Os números das duas charretes são distintos.

Para a saída imprima uma única linha, contendo um único número inteiro, indicando o número da charrete que seria vencedora, conforme descrito acima.

Exemplos

Entrada

45 900 40
17 300 20

Saída

17

Entrada

1 1000 100
2 1000 99

Saída

1

 Solucação em C/C++

#include <stdio.h>

int main1() {
  int n1, n2, d, v, i;
  double t1, t2;
  scanf ("%d %d %d", &n1, &d, &v);
  t1 = float(d) / v;

  scanf ("%d %d %d", &n2, &d, &v);
  t2 = float(d) / v;

  if (t1 < t2) {
    printf("%d\n",  n1);
  } else {
    printf("%d\n",  n2);
  }

  return 0;
}

Considerando uma alteração no problema, permitindo um número variável de competidores, onde o número de competidores é informado no início do programa. A solução em C/C++ é apresentada a seguir:

#include <stdio.h>

int main() {
  int d, v, i, competidores;
  scanf("%d", &competidores);

  int n[competidores];
  double t[competidores];

  //calcula os tempos
  for (int i=0; i < competidores; i++) {
    scanf ("%d %d %d", &n[i], &d, &v);
    t[i] = float(d) / v;
  }

  //encontra o menor tempo
  double menor = t[0];
  int posicao  = 0;
  for (int i=1; i < competidores; i++) {
    if (t[i] < menor) {
        menor = t[i];
        posicao = i;
    }
  }

  //mostra o vencedor
  printf("%d\n",  n[posicao]);

  return 0;
}


 

Sair da versão mobile