Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

ELEVADOR - Elevador

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):

 

 

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

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.

Exemplo

Entrada:
11 9 2 3
7 8 3 2
10 15 3 7
8 9 3 2
0 0 0 0

Saída:
S
N
N
S


Adicionado por:Wanderley Guimarăes
Data:2011-02-12
Tempo limite:1s
Tamanho do fonte:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Linguagem permitida:Todas exceto: ASM64 CLOJURE ERL FSHARP PERL6 PY_NBC SCALA TCL
Origem:Primeira fase da Maratona de Programação - 2010

hide comments
2016-01-30 18:24:41
Todos os casos de teste do exemplo deram certo, alguém tem mais casos de teste?
2013-09-08 17:12:40 Paulo Fernando [FACENS]
Samuel, vc nao precisa desenvolver o algoritmo contando com as restriçőes, quando um exercicio nos fornece as restriçőes, ele nao quer dizer que o nosso programa tem que parar quando recebemos um dado fora das restriçőes, e sim que na vdd, os casos de testes serăo realizados dentro dessas restriçőes, a unica restriçăo que vc deve seguir, é quando o exercicio pede, por exemplo, que o final de entrada seja quando n=0, ou final de arquivo....
2013-07-16 07:04:49 Eduardo Maia [UECE]

Samuel Presa Toledo,

preste atençăo, pois, ao invés de while, para colocar as restriçőes, vocę vai usar o if.
2013-07-02 01:08:41 Washington Porto [USJT]


Last edit: 2013-07-02 05:53:25
2012-06-27 20:40:27 Bartira


Last edit: 2012-06-27 20:40:54
2012-05-29 05:44:30 Léo BH
...

Last edit: 2012-06-15 06:45:57
2012-05-26 07:47:10 Samuel Presa Toledo
Minha entrada está nesse formato:
while (((L<1)||(L>100))||((C<1)||(C>100))||((R1<1)||(R1>100))||((R2<1)||(R2>100)))
scanf("%d %d %d %d",&L,&C,&R1,&R2);

e minhas saídas estăo neste formato:
printf("N\n");

Até agora meu codigo năo está certo, sabe se é por algum motivo do formato das minhas saídas?

Abraçăo!
2012-05-21 14:33:13 chrislucas
1ş năo poste o código
2ş năo use chamadas ao sistema, system("pause") só funciona no windows, e provávelmente o servidor e uma distribuiçăo linux.
3ş só imprima as saidas que forem pedidas no problema, sem printf("entrada"), printf("saida") ou qualquer coisa do gęnero

Last edit: 2012-05-21 14:34:17
2012-05-10 03:07:47 henrique
#include <stdio.h>
#include <stdlib.h>

int main()

{
int L, C, R1, R2, V1;

while (1)
{
scanf( "%d%d%d%d", &L, &C, &R1, &R2 );
if ( ( L||C||R1||R2 )==0 )
return 0;

if (R1>=R2)
V1=R1;
else
V1=R2;

if ( ( C>=2*V1 )&&( (L-R1-R1)*(L-R1-R1)>=(4*R1*R2) )||( L>=2*V1 )&&( (C-R1-R1)*(C-R1-R1)>=(4*R1*R2) ) )
printf( "S\n\n" );
else
printf( "N\n\n" );
}
system( "PAUSE" );
return 0;
}

{
int L, C, R1, R2, V1;

while (1)
{
printf( "Entrada\n\n" );
scanf( "%d %d %d %d", &L, &C, &R1, &R2 );
printf( "\n" );

if ( ( L||C||R1||R2 )==0 )
return 0;

if (R1>=R2)
V1=R1;
else
V1=R2;

printf( "Saida\n\n" );

if ( ( C>=2*V1 )&&( (L-R1-R1)*(L-R1-R1)>=(4*R1*R2) )||( L>=2*V1 )&&( (C-R1-R1)*(C-R1-R1)>=(4*R1*R2) ) )
printf( "S\n\n" );
else
printf( "N\n\n" );
}
system( "PAUSE" );
return 0;
}


Last edit: 2012-05-10 22:25:19
2012-05-07 02:11:21 Matheus de Araújo
Năo entendo o último caso (8 9 3 2)...
Eu estou testando "if (sqrt(L*L+C*C)>=(2*R1+2*R2+(sqrt(2)-1)*(R1+R2))", que eu esperava ser verdadeiro, mas que na verdade é falso (12.04>12.07). É para arredondar?
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.