Friend - International Olympiad in Informatics

Anuncio
InternationalOlympiadinInformatics2014
13-20thJuly2014
Taipei,Taiwan
friend
Day-2tasks
Language:es-CO
Friend
Construimosunaredsocialde personasnumeradas0,…,
.Algunosparesdepersonasenla
redseránamigos.Silapersona sevuelveamigadelapersona ,entoncestambiénlapersona se
vuelveamigadelapersona .
Seañadegentealareden etapas,lascualestambiénestánnumeradasde a
.Lapersona
seañadeenlaetapa .Enlaetapa ,seañadelapersona comolaúnicapersonaenlared.Encada
unadelassiguientes
etapas,seañadeunapersonaalaredporunencargado,elcualpuedeser
cualquierpersonaqueyaestéenlared.Enlaetapa (
),elencargadodeesaetapapuede
añadiralaperson entranteenlaredatravésdeunodelossiguientestresprotocolos:
IamYourFriendhacequelapersona sevuelvaamigadelencargado.
MyFriendsAreYourFriendshacequelapersona seaamigadecadaamigadelhuésped.Note
queesteprotocolonohaceque seaamigadelencargado.
WeAreYourFriendshacequelapersona seaamigadelencargadoytambiénqueseaamiga
decadaamigadelencargado.
Despuésdeconstruirlaredquisiéramoselegirunamuestraparaunaencuesta,estoes,elegirungrupo
degentedelared.Comolosamigostienengeneralmenteinteresesencomún,lamuestranodebería
incluirningúnpardepersonasqueseanamigas,launaconlaotra.Cadapersonatieneunaconfianza
paraencuestas,expresadacomounenteropositivoyquisiéramosencontrarunamuestraconla
confianzatotalmáximaposible.
Ejemplo
etapa
1
2
3
4
5
encargado
0
0
1
2
0
protocolo
IamYourFriend
MyFriendsAreYourFriends
WeAreYourFriends
MyFriendsAreYourFriends
IamYourFriend
relacionesdeamistadañadidas
(1,0)
(2,1)
(3,1),(3,0),(3,2)
(4,1),(4,3)
(5,0)
Inicialmentelaredcontieneúnicamentealapersona0.Elencargadodelaetapa1(persona0)invitaa
lapersona1atravésdelprotocoloIamYourFriend,porlotantosevuelvenamigas.Elencargadodela
etapa2(nuevamentelapersona0)invitaalapersona2conMyFriendsAreYourFriends,locualhace
quelapersona1(laúnicaamigadelencargado)sealaúnicaamigadelapersona3.Lapersona
encargadadelaetapa3(persona1)añadealapersona3atravésdeWeAreYourFriends,locual
hacequelapersona3unaamigadelapersona1(laencargada)ydelaspersonas0y2(lasamigasde
laencargada).Lasetapas4y5tambiénsemuestranenlatablaanterior.Laredfinalsemuestraenla
siguientefigura,enlacuallosnúmerosdentrodeloscírculosmuestranalaspersonasylosnúmeros
1/3
cercadeloscírculosmuestranlaconfianza.Lamuestraconsistentedelaspersonas3y5tienela
confianzatotaliguala20+15=35,elcualeslaconfianzatotalmáximaposible.
Tarea
Dadaladescripcióndecadaetapaylaconfianzadecadapersona,encontrarunamuestraconla
confianzamáximatotal.UstedúnicamentenecesitaimplementarlafunciónfindSample.
findSample(n,confidence,host,protocol)
n:elnúmerodepersonas.
confidence:arreglodetamaño ;confidence[i]dalaconfianzadelapersona .
host:arreglodelongitud ;host[i]daelencargadodelaetpa .
protocol:arreglodelongitud ;protocol[i]daelcódigodeprotocolousadoenla
etapa (
):0paraIamYourFriend,1paraMyFriendsAreYourFriendsy2para
WeAreYourFriends.
Comonohayencargadoenlaetapa0,host[0]yprotocol[0]estánindefinidosyno
deberìanseraccesadosporsuprograma.
Lafuncióndebedevolverlaconfianzatotalmáximaposibleparaunamuestra.
Subtareas
Algunassubtareasusanúnicamenteunsubconjuntodeprotocolos,comosemuestraenlasiguiente
tabla.
subtarea puntos
1
11
2
8
3
4
8
19
5
23
6
31
confianza
Todaslasconfianzas1
protocolosusados
Todoslostresprotocolos
Solo
MyFriendsAreYourFriends
SoloWeAreYourFriends
SoloIamYourFriend
Ambos
MyFriendsAreYourFriendsy
IamYourFriend
Todoslostresprotocolos
2/3
Detallesdeimplementación
Ustedtienequeenviarexactamenteunarchivo,llamadofriend.c,friend.cppofriend.pas.
Estearchivodebeimplementarelsubprogramadescritoanteriormente,usandolossiguientes
prototipos.Ustedtambiéndebeincluirunarchivodeencabezadofriend.hparaimplementaciónen
C/C++.
ProgramasC/C++
intfindSample(intn,intconfidence[],inthost[],intprotocol[]);
ProgramasPascal
functionfindSample(n:longint,confidence:arrayoflongint,host:array
oflongint;protocol:arrayoflongint):longint;
Calificadorejemplo
Elcalificadorejemploleelaentradaenelsiguienteformato:
línea1:n
línea2:confidence[0],...,confidence[n-1]
línea3:host[1],protocol[1],host[2],protocol[2],...,host[n-1],protocol[n-1]
ElcalificadorejemploimprimiráelvalordevueltodefindSample.
3/3
Descargar