Balanza

Anuncio
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
Descargar