URI Online Judge | 1124
Elevador
Maratona de Programação da SBC
Brasil
Timelimit: 1
Brasil
A FCC (Fábrica de Cilindros de Carbono) fabrica vários tipos de cilindros de carbono. A FCC está instalada no décimo andar de um prédio, e utiliza os vários elevadores do prédio para transportar os cilindros. Por questão de segurança, os cilindros devem ser transportados na posição vertical; como são pesados, no máximo dois cilindros podem ser transportados em uma única viagem de elevador. Os elevadores têm formato de paralelepípedo e sempre têm altura maior que a altura dos cilindros.
Para minimizar o número de viagens de elevador para transportar os cilindros, a FCC quer, sempre que possível, colocar dois cilindros no elevador. A figura abaixo ilustra, esquematicamente (vista superior), um caso em que isto é possível (a), e um caso em que isto não é possível (b):
Para minimizar o número de viagens de elevador para transportar os cilindros, a FCC quer, sempre que possível, colocar dois cilindros no elevador. A figura abaixo ilustra, esquematicamente (vista superior), um caso em que isto é possível (a), e um caso em que isto não é possível (b):

Como existe uma quantidade muito grande de elevadores e de tipos de cilindros, a FCC quer que você escreva um programa que, dadas as dimensões do elevador e dos dois cilindros, determine se é possível colocar os dois cilindros no elevador.
Entrada
A entrada contém vários casos de teste. A primeira e única linha de cada caso de teste contém quatro números inteiros L, C, R1 e R2, separados por espaços em branco, indicando respectivamente a largura do elevador (1 ≤ L ≤ 100), o comprimento do elevador (1 ≤ C ≤ 100), e os raios dos cilindros (1 ≤ R1, R2 ≤ 100).
O último caso de teste é seguido por uma linha que contém quatro zeros separados por espaços em branco.
O último caso de teste é seguido por uma linha que contém quatro zeros separados por espaços em branco.
Saída
Para cada caso de teste, o seu programa deve imprimir uma única linha com um único caractere: ‘S’ se for possível colocar os dois cilindros no elevador e ‘N’ caso contrário.
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#include <time.h>
#define MIN(a, b) ((a) < (b) ? (a) : (b))
#define MAX(a, b) ((a) > (b) ? (a) : (b))
#define ABS(a) ((a) < 0 ? -(a) : (a))
#define IMPAR(a) ((a)&1)
#define CTOI(a) ((a) - '0')
#define ITOC(a) ((a) + '0')
#define TRUE 1
#define FALSE 0
int main()
{
int L, C, R1, R2;
#ifdef DEBUG
double tI_ = clock();
#endif
while(scanf("%d %d %d %d", &L, &C, &R1, &R2) && !(L == 0 && C == 0 && R1 == 0 && R2 == 0))
{
if(R1 * 2 <= L && R1 * 2 <= C && R2 * 2 <= L && R2 * 2 <= C)
{
if(sqrt(pow((R1 - (C - R2)), 2) + pow(((L - R1) - R2), 2)) >= (R1 + R2))
printf("S\n");
else
printf("N\n");
}
else
printf("N\n");
}
#ifdef DEBUG
printf("Tempo: %.1lf %.1lf\n", clock() - tI_, (clock() - tI_) / CLK_TCK);
#endif
return 0;
}
0 Comentários