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 BR 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 MN).

 

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

x
+
cmd
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

Output

x
+
cmd
F

#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

x
+
cmd
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

Output

x
+
cmd
F
Advertisements

Demonstration


Previous
#2375 Beecrowd Online Judge Solution 2375 Sedex Solution in C, C++, Java, Js and Python
Next
#2377 Beecrowd Online Judge Solution 2377 Pedágio Solution in C, C++, Java, Js and Python