Download Balanzas

Document related concepts

Problema de las doce monedas wikipedia , lookup

Dilema de Triffin wikipedia , lookup

Tasa de cambio wikipedia , lookup

Transcript
InternationalOlympiadinInformatics2015
26thJuly-2ndAugust2015
Almaty,Kazakhstan
Day1
scales
Language:en-BOL
Balanzas
Aminatieneseismonedas,numeradasde a .Ellasabequecadamonedatieneunpesodiferente.A
ellalegustaríaordenarlasmonedasdeacuerdoasupeso.Paraestoellahadesarrolladounnuevotipo
debalanza.
Unabalanzatradicionaltienedosplatos.Parausarestetipodebalanza,debesponerunamonedaen
cadaplatoylabalanzadeterminarácuálmonedaeslamáspesada.
LanuevabalanzadeAminaesmáscompleja.Estaposeecuatroplatos,etiquetados , , y .La
balanzatienecuatroconfiguracionesdiferentes,cadaunapararesponderunapreguntadiferente.Para
usarestabalanza,Aminadebeponerexactamenteunamonedaencadaunodelosplatos , ,y .
Adicionalmente,sóloenlacuartaconfiguración,elladebeponerunamonedaenelplato .
Cadaunadelascuatroconfiguracionesresponderáunadelassiguientescuatropreguntas:
1. ¿Cuáldelasmonedasenlosplatos , ,y eslamáspesada?
2. ¿Cuáldelasmonedasenlosplatos , ,y eslamásliviana?
3. ¿Cuáldelasmonedasenlosplatos , ,y eslamediana?(Estaeslamonedaquenoesni
lamáspesadanilamásliviana.)
4. Entrelasmonedasenlosplatos , ,y ,consideralasmonedasquesonmáspesadasquela
monedaenelplato .Sihaymonedasquecumplenesto,¿cuáldeestaseslamásliviana?En
casocontrario,siningunadelasmonedasen , ,y esmáspesadaquelamonedaen ,
responde¿cuáldelasmonedasenlosplatos , ,y eslamásliviana?
Tarea
EscribeunprogramaqueordenelasseismonedasdeAminadeacuerdoasupeso.Elprogramapuede
hacerpreguntasalabalanzadeAminaparacompararelpesodelasmonedas.Tuprogramaserá
probadoconvarioscasosdeprueba,cadaunocorrespondienteaunnuevoconjuntodeseismonedas.
TuprogramadebeimplementarlasfuncionesinityorderCoins.Durantecadaejecucióndetu
programa,elevaluador(grader)llamaráprimeroainit;exactamenteunavez.Estotedaráel
númerodecasosdepruebasytepermitiráinicializarlasvariables.Elevaluadorllamará
posteriormenteaorderCoins();unavezporcasodeprueba.
init(T)
T:Elnúmerodecasosdepruebaquetuprogramadeberáresolverduranteestaejecución.
Tesunenteroenelrango
.
Estafunciónnotienevalorderetorno.
orderCoins()
1/4
Estafunciónesllamadaexactamenteunavezporcadacasodeprueba.
LafuncióndebedeterminarelordencorrectoparalasmonedasdeAminallamandoalas
funcionesgetHeaviest(),getLightest(),getMedian(),y/o
getNextLightest().
Unavezquelafuncióndeterminaelordencorrectodebereportarlo,llamandoalafunción
answer().
Despuésdellamaraanswer(),lafunciónorderCoins()deberetornar.
orderCoins()notieneningúnvalorderetorno.
Puedesusarlassiguientesfuncionesentuprograma:
answer(W)—tuprogramadebeusarestafunciónparareportarlarespuestaqueencuentre.
W:Unarreglodetamaño6quecontieneelordencorrectodelasmonedas.W[0]hasta
W[5]debeserelnúmerodecadamoneda(esdecir,númerosde a )enelordendela
máslivianaalamáspesada.
TuprogramadebellamarestafuncióndesdeorderCoins()solounavezporcasode
prueba.
Estafunciónnotienevalorderetorno.
getHeaviest(A,B,C),getLightest(A,B,C),getMedian(A,B,C) —estas
correspondenrespectivamentealasconfiguraciones1,2y3enlabalanzadeAmina’s.
A,B,C:Lasmonedasparaponerenlosplatos , ,y ,respectivamente.A,B,yC
debensertresenterosdistintosentre y .
CadafunciónretornaunodelosnúmerosA,B,yC:elnúmerodelamonedaapropiada.
Porejemplo,getHeaviest(A,B,C)retornaelnúmerodelamonedamáspesada
entrelastresdadascomoparámetro.
getNextLightest(A,B,C,D) —estacorrespondealaconfiguración4enlabalanzade
Amina.
A,B,C,D:Lasmonedasparaponerenlosplatos , , ,y ,respectivamente.A,B,C,
yDdebensercuatroenterosdistintosentre y .
LafunciónretornaunodelosnúmerosA,B,yC:elnúmerodelamonedaseleccionadapor
labalanzadelaformadescritaparalaconfiguración4.Estoes,lamonedaretornadaesla
máslivianaentreaquellasmonedasenlosplatos , , quesonmáspesadasquela
monedaenelplato ;o,siningúnaesmáspesadaquelamonedaenelplato ,la
monedaretornadaessimplementelamáslivianaentrelasmonedasenlosplatos , , .
Puntaje
Nohaysubtareasenesteproblema.Envezdeesto,tupuntajesebasaráencuántasvecestu
programausalabalanza(elnúmerototaldellamadasalasfuncionesgetLightest(),
getHeaviest(),getMedian()y/ogetNextLightest()).
Tuprogramaseejecutarávariasvecesconmultiplescasosdepruebaencadaejecución.Definamos
2/4
como elnúmerodeejecucionesdetuprograma.Estenúmeroestáfijadoporloscasosdeprueba.Si
tuprogramanoordenalasmonedasdeformacorrectaenalgunodeloscasosdepruebadealguna
ejecución,obtendrá0puntos.Deotraforma,cadaejecuciónseráevaluadaindividualmentecomose
describeacontinuación.
Sea elmenornúmeroconelcuálesposibleordenarlasecuenciadeseismonedasusando veces
labalanza.Parahacerlatareamásdesafiante,norevelaremoselvalorde aquí.
Supónqueelnúmeromáximodeusosdelabalanzaentretodosloscasosdepruebadetodaslas
ejecucioneses
paraalgúnentero .Consideraahoraunasolaejecucióndetuprograma.Sea
elnúmeromásgrandedeusosdelabalanzaentretodoslos casosdepruebaenunasóla
ejecuciónparaalgúnenterononegativo .(Siusasmenosde usosdelabalanzaparacadacasode
prueba,entonces
.)Entonces,elpuntajeparaesaejecuciónserá
,redondeado
haciaabajohastadosdígitosdespuésdelpuntodecimal.
Enparticular,situprogramarealizaalomás usosdelabalanzaencadacasodepruebaparacada
ejecución,obtendrás100puntos.
Ejemplo
Supónquelasmonedasestánordenadas
Llamadaa
función
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áslivianaalamáspesada.
Valorde
Explicación
retorno
6
Lamoneda eslamediaentrelasmonedas , ,y .
1
3
6
Lamoneda eslamáspesadaentrelasmonedas , ,y .
Lasmonedas , ,y sonmáslivianasquelamoneda ,luegola
máslivianaentreellas( )esretornada.
Lasmonedas y sonambasmáspesadasquelamoneda .Entre
lasmonedas y ,lamoneda eslamásliviana.
5
Lamoneda eslamáspesadaentrelasmonedas , y .
1
6
Lamoneda eslamedianaentrelasmonedas , y .
Lamoneda eslamedianaentrelasmonedas , y .
Elprogramaencontrólarespuestacorrectaparaestecasode
prueba.
Evaluadordeejemplo
Elevaluadordeejemploleeelinputenelsiguienteformato:
línea : —-Elnúmerodecasosdeprueba
cadaunadelaslíneasdela ala
:unasecuenciade númerosdistintosentre y :el
ordendelasmonedasdesdelasmáslivianahastalamáspesada.
Porejemplo,uninputqueconsisteendoscasosdepruebadondeelordendelasmonedases
y
sevedelasiguienteforma:
3/4
2
123456
346215
Elevaluadordeejemploimprimeelarregloqueespasadocomoparametroalafunciónanswer().
4/4