Friend - International Olympiad in Informatics

Anuncio
InternationalOlympiadinInformatics2014
13-20thJuly2014
Taipei,Taiwan
friend
Day-2tasks
Language:en-BOL
Friend
Construimosunaredsocialde personasnumeradasde0,...,
.Algunosparesdepersonasen
laredseránamigos.Silapersona esamigodelapersona ,entonceslapersona tambiénesamigo
delapersona .
Laspersonassonañadidasalareden etapas,lascualessonnumeradasde a
.Esdecirla
persona esañadidaenlaetapa .Enlaetapa0,lapersona0esañadidacomolaunicapersonaenla
red.Encadaunadelassiguientes
etapas,unapersonaesañadidaalaredporun(host),quien
puedesercualquierpersonaqueyaestaenlared.Enlaetapa (
),elhostpuedeañadira
lapersona dentrolaredsiguiendounodelossiguientes3protocolos.
IamYourFriendhacealapersona amigodesoloelhost.
MyFriendsAreYourFriendshacealapersona amigodecadaunodelosamigosdelhost.
Notaqueesteprotocolonohacequelapersona seaunamigodelhost.
WeAreYourFriendshacealapersona amigodelhost,ytambienamigodecadaunodelos
amigosdelhost.
Despuesdeconstruirlarednosgustariaescogerunamuestraparaunaencuesta,estoquieredecir,
escogerungrupodepersonasdelared.Yaquelosamigosnormalmentetieneninteresesiguales,la
muestranodebeincluirapersonasquesonamigos.Cadapersonatieneunaencuestadeconfidencia
expresadacomounenteropositivo,ynosgustariaencontrarunamuestraconelmáximototalde
confidencia.
Example
stage
1
2
3
4
5
host
0
0
1
2
0
protocol
IamYourFriend
MyFriendsAreYourFriends
WeAreYourFriends
MyFriendsAreYourFriends
IamYourFriend
friendrelationsadded
(1,0)
(2,1)
(3,1),(3,0),(3,2)
(4,1),(4,3)
(5,0)
Inicialmentelaredcontienesoloalapersona0.Elhostdelaetapa1(enestecasolapersona0)invita
alapersona1conelprotocoloIamYourFriend,porlotantoellossonamigos.Elhostdelaetapa2
(persona0nuevamente)invitaalapersona2conMyFriendsAreYourFriends,locualhaceala
persona1(únicoamigodelhost)elunicoamigodelapersona2.Elhostdelaetapa3(persona1)
añadealapersona3conWeAreYourFriends,elcualhacealapersona3unamigodelapersona1(el
host)ylaspersonas0y2(losamigosdelhost).Laetapa4y5sontambienmostradasenlatablade
arriba.laredfinalesmostradaenlaimagenacontinuación,losnumerosdentroloscirculosmuestran
lasetiquetasdelaspersonas,ylosnúmerosalladodeloscirculosmuestranlasencuestasde
1/3
confidencia.Lamuestraconsistentedelaspersonas3y5tienenuntotaldeencuestadeconfidencias
iguala20+15=35,elcualeselmáximoposibletotaldeconfidencia.
Task
Dadaladescripcióndecadaetapayelvalordeconfidenciadecadapersona,encontrarunamuestra
conelmáximototaldeconfidencia.TusolonecesitasimplementarlafunciónfindSample.
findSample(n,confidence,host,protocol)
n:elnúmerodepersonas.
confidence:arraydelongitud ;confidence[i]quecontieneelvalordeconfidencia
delapersona .
host:arraydelongitud ;host[i]quecontienealhostdelaetapa .
protocol:arraydelongitud ;protocol[i]quecontieneelcódigodelprotocolo
usadoenlaetapa (
):0forIamYourFriend,1forMyFriendsAreYourFriends,
and2forWeAreYourFriends.
Yaquenohayhostenlaetapa0,host[0]yprotocol[0]sonindefinidosyno
deberíanserprocesadosportuprograma.
Lafuncióndeberíaretornarelmáximoposibletotaldeconfidencia.
Subtasks
Somesubtasksuseonlyasubsetofprotocols,asshowninthefollowingtable.
subtask points
1
11
2
8
3
4
8
19
5
23
6
31
confidence
Allconfidencevaluesare1
protocolsused
Allthreeprotocols
Only
MyFriendsAreYourFriends
OnlyWeAreYourFriends
OnlyIamYourFriend
Both
MyFriendsAreYourFriendsand
IamYourFriend
Allthreeprotocols
2/3
Implementationdetails
Youhavetosubmitexactlyonefile,calledfriend.c,friend.cpporfriend.pas.Thisfileshould
implementthesubprogramdescribedabove,usingthefollowingsignatures.Youalsoneedtoincludea
headerfilefriend.hforC/C++implementation.
C/C++program
intfindSample(intn,intconfidence[],inthost[],intprotocol[]);
Pascalprograms
functionfindSample(n:longint,confidence:arrayoflongint,host:array
oflongint;protocol:arrayoflongint):longint;
Samplegrader
Thesamplegraderreadstheinputinthefollowingformat:
line1:n
line2:confidence[0],...,confidence[n-1]
line3:host[1],protocol[1],host[2],protocol[2],...,host[n-1],protocol[n-1]
ThesamplegraderwillprintthereturnvalueoffindSample.
3/3
Descargar