Balanzas

Anuncio
InternationalOlympiadinInformatics2015
26thJuly-2ndAugust2015
Almaty,Kazakhstan
Day1
scales
Language:es-DOM
Balanzas
Aminaposeeseismonedas,enumeradasdel al .Ellasabequetodaslasmonedasposeenunpeso
distinto.Aminadeseaordenarlasdeacuerdoconsupeso.Paraesteproposito,hadesarrolladoun
nuevotipodebalanza.
Unabalanzatradicionalposeedosbandejas.Parausarestetipodebalanza,debescolocarunamodena
encadabandejaylabalanzadeterminarácuálmonedaesmáspesada.
ElnuevosistemadebalanzasdeAminaesmáscomplejo.Estetienecuatrobandejas,etiquetadas ,
, ,y .Labalanzaposeecuatroconfiguracionesdistintas,cadaunadelascualesrespondeauna
preguntadistintasobrelasmonedas.Parausarlabalanza,Animadebecolocarexactamenteuna
monedaencadaunadelasbandejas , ,y .Adicionalmente,deberácolocarexactamenteuna
monedaenlabandeja .
Lascuatroconfiguracionesinstruiránalabalanzaaquerespondalassiguientescuatropreguntas:
1. ¿Cuáldelasmonedasenlasbandejas , ,y eslamáspesada?
2. ¿Cuáldelasmonedasenlasbandejas , ,y eslamásliviana?
3. ¿Cuáldelasmonedasenlasbandejas , ,y eslamediana?(Estaeslamonedaquenoes
nilamáspesadanilamáslivianadelastres.)
4. Dentrodelasmonedasenlasbandejas , ,y ,considerarsólolasmonedasquesonmás
pesadasquelamonedaenlabandeja .Siexistentalesmonedas,¿Cuáldelasmonedasesla
másliviana?Delocontrario,sinohayningunamonedacomotal,¿Cuáldelasmonedasenlas
bandejas , ,y eslamásliviana?
Tarea
EscribeunprogramaqueordenelasseismonedasdeAminadeacuerdoconsupeso.Elprograma
puedeindicarlealabalanzadeAminaquecomparelospesosdelasmonedas.Atuprogramaleserán
dadosvarioscasosdepruebaaresolver,cadaunocorrespondienteconunnuevoconjuntodeseis
monedas.
TuprogramadebeimplementarlasfunciónesinityorderCoins.Durantecadacorrida,elgrader
primerollamaráainitexactamenteunavez.Estotedaráelnúmerodecasosdepruebayte
permitiráinicializarcualquiervariable.Luego,elgraderllamaráorderCoinsunavezporcadacaso
deprueba.
init(T)
T:Elnúmerodecasosdepruebaquetuprogramatendráqueresolverduranteesta
ejecución.Tesunenteroenelrango
.
Estafunciónnotienevalorderetorno.
1/4
orderCoins()
Estafunciónesllamadaexactamenteunavezporcadacasodeprueba.
EstafuncióndebedeterminarelordencorrectodelasmonedasdeAminaalllamarlas
funciónesdelgradergetLightest(),getHeaviest(),getMedian(),y/o
getNextLightest().
Unavezquelafunciónconozcaelordencorrecto,estadeberáreportarlollamandola
funcióndelgraderanswer().
Despuesdellamaranswer(),lafunciónorderCoins()deberetornar.Estanoposee
valorderetorno.
Puedesusarlassiguientesfuncionesdelgraderentuprograma:
answer(W)—tuprogramadebeusarestafunciónparareportarlarespuestaqueha
encontrado.
W:Unarreglodelongitud6conteniendoelordencorrectodelasmonedas.W[0]hasta
W[5]debecontenerlosvaloresdelasmonedas(númerosde al )enelordendela
monedamáslivianaalamáspesada.
TuprogramasólodeberállamarestafuncióndesdeorderCoins(),unavezporcada
casodeprueba.
Estafunciónnoposeevalorderetorno.
getHeaviest(A,B,C),getLightest(A,B,C),getMedian(A,B,C) —estas
correspondenconlascofiguraciones1,2y3paralabalanzadeAmina.
A,B,C:Lasmonedasquesoncolocadasenlasbandejas , ,y ,respectivamente.A,B,
yCdebensertresenterosdistintos,cadaunodentrodelrango y inclusive.
CadafunciónretornaunodelosnúmerosA,B,yC:elvalordelamonedaapropiada.Por
ejemplo,getHeaviest(A,B,C)retornaelvalormáspesadodetresmonedasdadas.
getNextLightest(A,B,C,D) —estacorrespondealaconfiguración4delabalanzade
Amina.
A,B,C,D:Lasmonedasquesoncolocadasenlasbandejas , , ,y ,
respectivamente.A,B,C,yDdebensercuatroenterosdistintos,cadaunodentrodelrango
al inclusive.
LafunciónretornaunodelosnúmerosA,B,yC:elnúmerodelamonedaseleccionadapor
labalanzasegúnfuedescritoanteriormenteparalaconfiguración4.Estoes,lamoneda
retornadaeslamáslivianadentrodelasmonedascolocadasenlasbandejas , ,y
quesonmáspesadasquelamonedaenlabandeja ;o,siningunadeellasesmás
pesadaquelamonedaenlabandeja ,lamonedaretornadaessimplementelamás
livianadelastresmonedasenlasbandejas , ,y .
Puntuación
Nohaysub-tareasenesteproblema.Ensulugar,tupuntuaciónsebasaráencuántaspesadas
(númerototaldellamadasalafuncionesdelgradergetLightest(),getHeaviest(),
2/4
getMedian()y/ogetNextLightest())hacetuprograma.
Tuprogramaserácorridomúltiplesvecesconmúltiplescasosdepruebaencadaejecución.Sea el
númerodeejecucionesdetuprograma.Estenúmeroseráasignadoporladatadeprueba.Situ
programanoordenalasmonedascorrectamenteenningunodeloscasosdecualquiercorrida,
obtendrá0puntos.Delocontrario,lasejecucionesseráncalificadasindividualmentedeacuerdoalo
siguiente:
Sea elnúmeromáspequeñotalqueseaposibleordenarcualquiersecuenciadeseismonedas
usando pesadasenlabalanzadeAmina.Parahacerlatareamásretadora,norevelaremosaquíel
valorde .
Supónqueelmayornúmerodepesadasdentrodetodosloscasosdetodaslasejecucioneses
paraalgúnentero .Entonces,consideraunaúnicaejecucióndetuprograma.Sea
xelnúmero
masgrandedepesadasdentrodetodoslos casosenestaejecuciónparaalgúenterono-negativo .
(Siusasmenosde pesadasparacadacasodeprueba,entonces
.)Entonces,lapuntuación
paraestaejecuciónserá
,redondeadahaciaabajoadosdigitosdespuésdelpunto
decimal.
Enparticular,situprogramahacealosumo pesadasencadacasodepruebadecadaejecución,
obtendrás100puntos.
Ejemplo
Supónquelamonedasestánordenadas
Funcionde
llamada
getMedian(4,5,6)
getHeaviest(3,1,
2)
getNextLightest(2,
3,4,5)
getNextLightest(1,
6,3,4)
getHeaviest(3,5,
6)
getMedian(1,5,6)
getMedian(2,4,6)
answer([3,4,6,2,
1,5])
desdelamáslivianahastalasmaspesada.
Retorna
Explicacion
6
Moneda eslamedianadentrodelasmonedas , ,y .
1
Moneda eslamáspesadadentrodelasmonedas , ,y .
3
6
Moneda , ,y sontodasmaslivianasquelasmonedas ,de
maneraquelamáslivianadentrodeellas( )esretornada.
Monedas y sonambasmáspesadasquelamoneda .Entrelas
monedas y ,lamoneda eslamásliviana.
5
Moneda eslamáspesadadentrodelasmonedas , y .
1
6
Moneda eslamedianadentrodelasmonedas , y .
Moneda eslamedianadentrodelasmonedas , y .
Elproramaencontrolarespuestacorrectaparaestecasodeprueba.
GraderdeEjemplo
Elgraderdeejemploleelaentradaenelsiguienteformato:
linea : —-elnúmerodecasosdeprueba.
cadaunadelaslineasdesde to
:unasecuenciade númerosdistintosdesde to :el
3/4
ordendelasmonedasdesdelamáslivianaalamáspesada.
Porejemplo,unaentradaqueconsisteendoscasosdepruebadondelasmonedasestánordenadas
y
sevisualizadelasiguientemanera:
2
123456
346215
Elgraderdeejemploimprimiráelarregloquefuepasadocomoparametroalafunciónanswer().
4/4
Descargar