InternationalOlympiadinInformatics2014 13-20thJuly2014 Taipei,Taiwan friend Day-2tasks Language:es-AR Friend(amigo) Seconstruyeunaredsocialapartirde personasnumeradas0,..., .Algunosparesde personasenlaredseránamigos.Silapersona sehaceamigodelapersona ,entonceslapersona tambiénsehaceamigodelapersona . Laspersonassonañadidasalareden etapas,lascualestambiénsonnumeradasde a .La persona esañadidaenlaetapa .Enlaetapa0,lapersona0esañadidacomolaúnicapersonadela red.Encadaunadelassiguientes etapas,lapersonaesañadidaalaredporunservidor,que puedesercualquierpersonayaingresadaalared.Durantelaetapa ( ),elservidorpara esaetapapuedeañadirlaingresantepersona enlaredporunodelossiguientestresprotocolos: IAmYourFriendhacealapersona amigodelservidorsolamente. MyFriendsAreYourFriendshaceapersona amigodecadaamigodelservidor.Observeque esteprotocolonohacealapersona amigodelservidor. WeAreYourFriendshacealapersona amigodelservidor,ytambiénamigodecadaamigodel servidor. Despuésdeconstruirlaredsedeseaextraerunamuestraparaunaencuesta,esoes,elegirungrupo depersonasdelared.Yaqueamigosusualmentetieneninteresessimilares,lamuestranodebiera incluirningúnpardepersonasqueseanamigosentresí.Cadapersonatieneuníndicedeconfianza, expresadoporunenteropositivo,ysequiereencontrarunamuestraconlamáximaconfianzatotal. Ejemplo etapa 1 2 3 4 5 servidor 0 0 1 2 0 protocolo IAmYourFriend MyFriendsAreYourFriends WeAreYourFriends MyFriendsAreYourFriends IAmYourFriend relacionesamigoañadidas (1,0) (2,1) (3,1),(3,0),(3,2) (4,1),(4,3) (5,0) Inicialmentelaredcontienesólolapersona0.Elservidordeetapa1(persona0)invitaalanueva persona1atravésdelprotocoloIAmYourFriend,porloquesehacenamigos.Elservidordelaetapa2 (persona0nuevamente)invitalapersona2conMyFriendsAreYourFriends,quehacealapersona1 (elúnicoamigodelservidor)el[únicoamigodelapersona2.Elservidordelaetapa3(persona1) añadelapersona3medianteWeAreYourFriends,quehacealapersona3amigodelapersona1(el servidor)ypersonas0y2(losamigosdelservidor).Lasetapas4y5sonmostradastambiénenla tablaarriba.Laredfinalesmostradaenlasiguientefigura,enlacuallosnúmerosdentrodelos círculosmuestranlosrótulosdelaspersonas,ylosnúmerospróximosaloscírculosmuestranelíndice deconfianza.Lamuestraconsistiendodelaspersonas3y5tieneíndicedeconfianzatotaliguala20+ 1/3 15=35,elcualeselmáximoíndicetotaldeconfianzaposible. Tarea Dadaladescripcióndecadaetapayelvalordeconfianzadecadapersona,encuentreunamuestra conlamáximaconfianza.SolodebesimplantarlafunciónfindMuestra. findMuestra(n,confidence,host,protocol) n:elnúmerodepersonas. confidence:arraydelargo ;confidence[i]daelvalorconfianzadelapersona . host:arraydelargo ;host[i]daelservidordeetapa . protocol:arraydelargo ;protocol[i]daelcodigodeprotocolousadoenlaetapa ( ):0paraIAmYourFriend,1paraMyFriendsAreYourFriends,y2para WeAreYourFriends. Puestoquenohayservidorenetapa0,host[0]yprotocol[0]estánindefinidosyno debieranseraccedidosportuprogram. lafuncióndebedevolverelmáximoaposiblevalortotaldeconfianzadelamuestra. Subtareas Algunassubtareasusansólounsubconjuntodeprotocolos,talcomosecompruebaenlasiguiente tabla. subtarea puntos 1 11 2 8 3 4 8 19 5 23 6 31 confianza Todoslosvaloresde confianzason1 protocolosusados Todoslostresprotocolos Solamente MyFriendsAreYourFriends SolamenteWeAreYourFriends SolamenteIAmYourFriend Tanto MyFriendsAreYourFriendsy IAmYourFriend Lostresprotocolos 2/3 Detallesdeimplantación Debesenviarexactamenteunarchive,llamadofriend.c,friend.cppofriend.pas.Este archivodeberáimplantarelsubprogramadescriptomásarriba,utilizandolossiguientes encabezamientos.Necessitasincluirtambiénunarchivocabezafriend.hparalaimplantaciónen C/C++. ProgramaciónenC/C++ intfindSample(intn,intconfidence[],inthost[],intprotocol[]); ProgramaciónenPascal functionfindSample(n:longint,confidence:arrauienteyoflongint,host:array oflongint;protocol:arrayoflongint):longint; Samplegrader Elsamplegrader(programaevaluadorparapruebalocal)leesuentradaconelformatosiguiente: linea1:n linea2:confidence[0],...,confidence[n-1] linea3:host[1],protocol[1],host[2],protocol[2],...,host[n-1],protocol[n-1] ElsamplegraderimprimiráelvalorderetornodefindSample. 3/3