Submeter | Todas submissőes | Melhores | Voltar |
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? |