InternationalOlympiadinInformatics2015 26thJuly-2ndAugust2015 Almaty,Kazakhstan Day1 scales Language:es-AR Balanza Aminatieneseismonedas,numeradasde a .Sabequelospesosdelasmonedassontodosdistintos entresí.Deseaordenarlasdeacuerdoasupeso.Paraestepropósito,hadesarrolladounnuevotipode balanza. Unabalanzatradicionalconstadedosplatos.Parautilizarla,secolocaunamonedaencadaplatoyla balanzadeterminacuáldelasmonedaseslamáspesada. LanuevabalanzadeAminaesmáscompleja.Tienecuatroplatos,rotulados , , ,y .La balanzatienecuatroconfiguracionesposibles,cadaunadelascualesrespondeunapreguntadiferente acercadelasmonedas.Parautilizarlabalanza,Aminadebecolocarexactamenteunamonedaen cadaunodelosplatos , ,y .Además,cuandoseutilizalacuartaconfiguracióndebecolocar exactamenteunamonedaenelplato . Lascuatroconfiguracioneshacenquelabalanzarespondalassiguientespreguntas: 1. ¿Cuáldelasmonedasenlosplatos , ,y eslamáspesada? 2. ¿Cuáldelasmonedasenlosplatos , ,y eslamásliviana? 3. ¿Cuáldelasmonedasenlosplatos , ,y eslamediana?(Esdecir,lamonedaquenoesni lamáspesadanilamáslivianadelastres.) 4. Delasmonedasenlosplatos , ,y ,considéreseúnicamenteaquellasquesonmáspesadas quelamonedaenelplato .Siexistealmenosunamonedaentalescondiciones,¿cuálde ellaseslamásliviana?Delocontrario,sinoexisteningunamonedaentalescondiciones,¿cuál delasmonedasenlosplatos , ,y eslamásliviana? Tarea EscribaunprogramaqueordenelasseismonedasdeAminadeacuerdoasupeso.Elprogramapuede consultarlabalanzadeAminaparacompararlospesosdelasmonedas.Elprogramarecibirávarios casosdepruebapararesolver,cadaunodeloscualescorresponderáaunnuevoconjuntodeseis monedas. ElprogramadeberáimplementarlasfuncionesinityorderCoins.Encadacorridadelprograma, elevaluadorllamaráprimeroainitexactamenteunavez.Enestallamadaelprogramarecibela cantidaddecasosdeprueba,ylepermiteinicializarvariables.Acontinuación,elevaluadorllamaráa orderCoins()exactamenteunavezporcasodeprueba. init(T) T:Lacantidaddecasosdepruebaqueelprogramadeberáresolverenestacorrida.Tes unenteroenelrango . Estafunciónnoretornaningúnvalor. 1/4 orderCoins() Estafunciónesllamadaexactamenteunavezporcasodeprueba. LafuncióndebedeterminarelordencorrectodelasmonedasdeAmina,llamandoalas funcionesgetLightest(),getHeaviest(),getMedian(),y/o getNextLightest(). Unavezquelafuncióndeterminaelordencorrecto,deberáreportarlollamandoala funciónanswer(). Luegodellamaraanswer(),lafunciónorderCoins()deberáretornar.Noretorna ningúnvalor. Sepuedeutilizarlassiguientesfuncionesdelevaluadorenelprograma: answer(W)—elprogramadeberáutilizarestafunciónparareportarlarespuestahallada. W:Unarreglodelongitud6conelordencorrectodelasmonedas.W[0]aW[5]deberán contenerlosnúmerosdemoneda(esdecir,númerosde a )enordendesdelamoneda máslivianahastalamáspesada. ElprogramaúnicamentedeberállamaraestafuncióndesdeorderCoins(), exactamenteunavezporcasodeprueba. Estafunciónnoretornaningúnvalor. getHeaviest(A,B,C),getLightest(A,B,C),getMedian(A,B,C) —estas funcionessecorrespondenconlasconfiguraciones1,2y3delabalanzadeAmina, respectivamente. A,B,C:Lasmonedasquesecolocanenlosplatos , ,y ,respectivamente.A,B,yC deberánsertresenterosdistintos,entre y inclusive. CadaunadelasfuncionesretornaunodelosnúmerosA,B,yC:elnúmeroque correspondaalamonedaapropiada.Porejemplo,getHeaviest(A,B,C)retornael númeroquecorrespondealamáspesadadelastresmonedasdadas. getNextLightest(A,B,C,D) —estafuncióncorrespondealaconfiguración4dela balanzadeAmina A,B,C,D:Lasmonedasquesecolocanenlosplatos , , ,y ,respectivamente.A,B, C,yDdeberánsercuatroenterosdistintos,cadaunoentre y inclusive. LafunciónretornaunodelosnúmerosA,B,yC:elnúmerodelamonedaseleccionadapor labalanza,deacuerdoalodescritoanteriormenteparalaconfiguración4.Esdecir,la monedaretornadaeslamáslivianaentreaquellasmonedasdelosplatos , ,y que sonmaspesadasquelamonedaenelplato ;o,siningunadeellasesmáspesadaquela monedaenelplato ,lamonedaretornadaessimplementelamáslivianadelastres monedasenlosplatos , ,y . Puntaje Esteproblemanotienesubtareas.Encambio,elpuntajesebasaenlacantidadtotaldepesadas(es decir,lacantidadtotaldellamadasalasfuncionesgetLightest(),getHeaviest(), 2/4 getMedian()y/ogetNextLightest()delevaluador)querealizaelprograma. Elprogramaseráejecutadomúltiplesveces,conmúltiplescasosdepruebaencadacorrida.Sea el númerodecorridasdelprograma.Estenúmeroestáfijadoporlosdatosdetestutilizadosenla evaluación.Sielprogramanoproduceelordencorrectodelasmonedasenalgúncasodepruebade algunacorrida,obtendráautomáticamente0puntos.Delocontrario,elpuntajedecadacorridase calculademaneraindependientecomoseindicaacontinuación. Sea elmenornúmerotalquesiempreesposibleordenarunasecuenciadeseismonedasutilizandoa losumo pesadasenlabalanzadeAmina.Parahacerlatareamásdesafiante,elvalorde noserá reveladoenesteenunciado. Sea lamáximacantidaddepesadasquerealizaelprograma,deentretodosloscasosde pruebadetodaslascorridas,con enterononegativo.Luego,considéreseunacorridaparticulardel programa.Sea lamáximacantidaddepesadasquerealizaelprograma,deentretodoslos casosdepruebadeestacorrida,con enterononegativo.(Sielprogramautilizamenosde pesadasentodosloscasosdeprueba,entonces .)Elpuntajeparaestacorridaserá ,truncadoadosdígitosdespuésdelpuntodecimal. Enparticular,sielprogramarealizaalosumo pesadasencadaunodeloscasosdepruebadecada unadelascorridas,obtendrá100puntos. Ejemplo Supongamosquelasmonedasseordenan Llamadaa función Valores retornados getMedian(4,5,6) 6 getHeaviest(3,1, 2) 1 getNextLightest(2, 3 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]) 6 desdelamáslivianaalamáspesada. Explicación Lamonedanúmero eslamedianaentrelasmonedasnúmero , ,y . Lamonedanúmero eslamáspesadaentrelasmonedasnúmero , ,y . Lasmonedasnúmero , ,y sontodasmáslivianasquela monedanúmero ,porlocuallamaslivianadeellas( )es retornada. Lasmonedasnúmero y sonambasmáspesadasquela número .Entrelasmonedas y ,la eslamásliviana. 5 Lamoneda eslamáspesadaentre , y . 1 6 Lamoneda eslamedianaentrelasmonedas , y . Lamoneda eslamedianaentrelasmonedas , y . Elprogramahallólarespuestacorrectaparaestecasodeprueba. Evaluadordeejemplo Elevaluadordeejemploleelaentradaenelsiguienteformato: línea : —-lacantidaddecasosdeprueba 3/4 cadaunadelaslíneas a :unasecuenciade númerosdistintosentre y :elordende lasmonedasdelamáslivianaalamáspesada. Porejemplo,unaentradaqueconsistededoscasosdepruebadondelasmonedasseordenan y sevedelasiguientemanera: 2 123456 346215 Elevaluadordeejemploimprimeelarregloquesepasacomoparámetroalafunciónanswer(). 4/4