Algorithm
Problem Name: 2 AD-HOC - beecrowd | 2376
Problem Link: https://www.beecrowd.com.br/judge/en/problems/view/2376
Copa do Mundo
Por OBI - Olimpíada Brasileira de Informática 2010 Brazil
Timelimit: 1
Este ano tem Copa do Mundo! O país inteiro se prepara para torcer para a equipe canarinho conquistar mais um título, tornando-se hexacampeã.
Na Copa do Mundo, depois de uma fase de grupos, dezesseis equipes disputam a Fase final, composta de quinze jogos eliminatórios. A figura abaixo mostra a tabela de jogos da Fase final:
Na tabela de jogos, as dezesseis equipes finalistas são representadas por letras maiúsculas (de A a P), e os jogos são numerados de 1 a 15. Por exemplo, o jogo 3 é entre as equipes identificadas por E e F; o vencedor desse jogo enfrentará o vencedor do jogo 4, e o perdedor será eliminado. A equipe que vencer os quatro jogos da Fase final será a campeã (por exemplo, para a equipe K ser campeã ela deve vencer os jogos 6, 11, 14 e 15.
Dados os resultados dos quinze jogos da Fase final, escreva um programa que determine a equipe campeã.
Entrada
A entrada é composta de quinze linhas, cada uma contendo o resultado de um jogo. A primeira linha contém o resultado do jogo de número 1, a segunda linha o resultado do jogo de número 2, e assim por diante. O resultado de um jogo é representado por dois números inteiros M e N separados por um espaço em branco, indicando respectivamente o número de gols da equipe representada à esquerda e à direita na tabela de jogos (0 ≤ M ≤ 20, 0 ≤ N ≤ 20 e M ≠ N).
Saída
Seu programa deve imprimir uma única linha, contendo a letra identificadora da equipe campeã.
Exemplos de Entrada | Exemplos de Saída |
4 1 1 0 0 4 3 1 2 3 1 2 2 0 0 2 1 2 4 3 0 1 3 2 3 4 1 4 1 0 |
F |
Code Examples
#1 Code Example with C Programming
Code -
C Programming
#include <stdio.h>
#include <stdlib.h>
#define true 1
#define false 0
typedef struct tipoNo{
char _time;
struct tipoNo *proximo;
} tipoNo;
typedef struct tipoFila{
tipoNo *primeiro;
tipoNo *ultimo;
} tipoFila;
void queue(tipoFila *fila);
void push(tipoFila *fila, char _time);
_Bool pop(tipoFila *fila, char *retorno);
int main (void)
{
int a, b;
tipoFila fila;
char i, timeA, timeB, retorno;
queue(&fila);
for (i = 'A'; i < = 'P'; ++i)
push(&fila, i);
for (i = 0; i < 15; ++i)
{
pop(&fila, &retorno);
timeA = retorno;
pop(&fila, &retorno);
timeB = retorno;
scanf("%d %d", &a, &b);
if (a > b)
push(&fila, timeA);
else
push(&fila, timeB);
}
pop(&fila, &retorno);
printf("%c\n", retorno);
}
void queue(tipoFila *fila)
{
fila->primeiro = NULL;
fila->ultimo = NULL;
}
void push(tipoFila *fila, char _time)
{
tipoNo *auxiliar;
auxiliar = (tipoNo *) malloc(sizeof(tipoNo));
if (!auxiliar)
exit(1);
if (fila->primeiro)
{
fila->ultimo->proximo = auxiliar;
auxiliar->proximo = NULL;
}
else
fila->primeiro = auxiliar;
fila->ultimo = auxiliar;
auxiliar->_time = _time;
}
_Bool pop(tipoFila *fila, char *retorno)
{
tipoNo *auxiliar;
if (fila->primeiro)
{
if (fila->primeiro->proximo)
{
*retorno = fila->primeiro->_time;
auxiliar = fila->primeiro;
fila->primeiro = fila->primeiro->proximo;
free(auxiliar);
return true;
}
else
{
*retorno = fila->primeiro->_time;
auxiliar = fila->primeiro;
fila->primeiro = fila->ultimo = NULL;
free(auxiliar);
return true;
}
}
else
{
retorno = NULL;
return false;
}
}
Copy The Code &
Try With Live Editor
Input
1 0
0 4
3 1
2 3
1 2
2 0
0 2
1 2
4 3
0 1
3 2
3 4
1 4
1 0
Output
#2 Code Example with C++ Programming
Code -
C++ Programming
#include <cstdio>
int main() {
int a, b, davez = 0;
char oitavas[16], quartas[8], semis[4], final[2], aux = 'A';
for (int i = 0; i < 16; i++) {
oitavas[i] = aux;
aux++;
}
for (int i = 0; i < 8; i++) {
scanf("%d %d", &a, &b);
if (a > b)
quartas[i] = oitavas[davez];
else
quartas[i] = oitavas[davez + 1];
davez += 2;
}
davez = 0;
for (int i = 0; i < 4; i++) {
scanf("%d %d", &a, &b);
if (a > b)
semis[i] = quartas[davez];
else
semis[i] = quartas[davez + 1];
davez += 2;
}
davez = 0;
for (int i = 0; i < 2; i++) {
scanf("%d %d", &a, &b);
if (a > b)
final[i] = semis[davez];
else
final[i] = semis[davez + 1];
davez += 2;
}
scanf("%d %d", &a, &b);
if (a > b)
printf("%c\n", final[0]);
else
printf("%c\n", final[1]);
return 0;
}
Copy The Code &
Try With Live Editor
Input
1 0
0 4
3 1
2 3
1 2
2 0
0 2
1 2
4 3
0 1
3 2
3 4
1 4
1 0
Output