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