InternationalOlympiadinInformatics2014 13-20thJuly2014 Taipei,Taiwan friend Day-2tasks Language:fr-BE Friend Onconstruitunréseausocialde membresnumérotés0,..., .Certainespairesdemembresdu réseauserontamis.Silemembre devientamiaveclemembre ,alorslemembre estégalement amiaveclemembre . Lesmembressontajoutésauréseauen étapesquisontégalementnumérotéesde à .Le membre estajoutéàl'étape .Àl'étape0,lemembre0estajoutécommeuniquemembreduréseau. Danschacunedes étapessuivantes,unmembreestajoutéauréseauparunhôtequipeutêtre n'importequellepersonnedéjàmembreduréseau.Àl'étape ( ),l'hôtedecetteétapepeut ajouterlemembre auréseauensuivantl'undesprotocolessuivants: JeSuisTonAmi(IAmYourFriend):faitdel'hôtel'uniqueamidumembre . MesAmisSontTesAmis(MyFriendsAreYourFriends):faitdumembre l'amidechaqueami del'hôteaumomentdelarequête.Notezqueceprotocolnerendpascemembre amide l'hôte. NousSommesTesAmis(WeAreYourFriends):faitdumembre l'amidel'hôteainsiquede chaqueamidel'hôteaumomentdelarequête. Aprèsavoirconstruitleréseau,onaimeraitpouvoirsélectionnerunéchantillonreprésentatifde personnespourunsondage,c'est-à-direuncertaingroupedemembresduréseau.Vuquedesamis ontsouventlesmêmescentresd'intérêt,l'échantillonnedoitpasincluredepairedemembresquisont amisl'undel'autre.Chaquemembreaunniveaudefiabilité(confidence)pourlesondage,exprimé parunentierstrictementpositif.Onaimeraittrouverl'échantillondemembresquimaximiselafiabilité totale. Exemple étape 1 2 3 4 5 hôte 0 0 1 2 0 protocole JeSuisTonAmi MesAmisSontTesAmis NousSommesTesAmis MesAmisSontTesAmis JeSuisTonAmi amitiésajoutés (1,0) (2,1) (3,1),(3,0),(3,2) (4,1),(4,3) (5,0) Initialement,leréseaunecontientquelemembre0.L'hôtedel'étape1(lemembre0)invitele nouveaumembre1vialeprotocoleJeSuisTonAmi,ilsdeviennentdoncamis.L'hôtedel'étape2(le membre0denouveau)invitelemembre2vialeprotocoleMesAmisSontTesAmis,quifaitdumembre 1(l'uniqueamidel'hôte)l'ami(leseul)dumembre2.L'hôtedel'étape3(lemembre1)ajoutele membre3vialeprotocoleNousSommesTesAmis,quifaitdumembre3l'amidumembre1(l'hôte)et desmembres0et2(amisdel'hôte).Lesétapes4et5sontégalementdonnéesdanslatableci-dessus. 1/3 Leréseaufinalestreprésentédansleschémasuivantdanslequellesnombresàl'intérieurdescercles indiquentlenumérodumembreetlesnombresàcôtédescerclesindiquentleniveaudefiabilité. L'échantilloncomposédesmembres3et5aunniveautotaldefiabilitéégalà20+15=35,quiestle niveautotaldefiabilitémaximalqu'ilestpossibled'atteindre. Tâche Étantdonnésladescriptiondechaqueétapeetleniveaudefiabilitédechaquemembre,trouver l'échantillonavecleniveautotaldefiabilitémaximal.Vousdevezuniquementimplémenterlafonction findSample. findSample(n,confidence,host,protocol) n:lenombredemembres. confidence:untableaudetaille ;confidence[i]indiquelafiabilitédumembre . host:tableaudetaille ;host[i]indiquel'hôtedel'étape . protocol:tableaudetaille ;protocol[i]indiquelecodeduprotocoleutilisépour l'étape ( ):0pourJeSuisTonAmi,1pourMesAmisSontTesAmis,et2pour NousSommesTesAmis. Vuqu'iln'yapasd'hôteàl'étape0,host[0]etprotocol[0]sontindéfinisetne doiventpasêtreutilisésparvotreprogramme. Lafonctiondoitretournerleniveautotaldefiabilitémaximalpossible. Sous-tâches Certainessous-tâchesutilisentunsous-ensembledesprotocoles,commedéfinici-dessous. soustâche points fiabilité 1 11 é 2 8 é 3 8 é 4 19 é 5 23 Touteslesfiabilités valent1 protocolesutilisés Les3protocoles Uniquement MesAmisSontTesAmis Uniquement NousSommesTesAmis UniquementJeSuisTonAmi MesAmisSontTesAmiset JeSuisTonAmi 2/3 soustâche 6 points 31 fiabilité é protocolesutilisés Les3protocoles Implémentation Vousdevezsoumettreunseulfichier,appeléfriend.c,friend.cppoufriend.pas.Cefichier doitimplémenterlafonctiondécriteprécédemment,enrespectantlessignaturessuivantes.Vousdevez inclure(#include)l'en-têtefriend.hpourl'implémentationC/C++. ProgrammeC/C++ intfindSample(intn,intconfidence[],inthost[],intprotocol[]); ProgrammePascal functionfindSample(n:longint,confidence:arrayoflongint,host:array oflongint;protocol:arrayoflongint):longint; Évaluateur L'évaluateurfournilitl'entréedansleformatsuivant: ligne1:n ligne2:confidence[0],...,confidence[n-1] ligne3:host[1],protocol[1],host[2],protocol[2],...,host[n-1],protocol[n-1] L'évaluateurafficheralavaleurretournéeparfindSample. 3/3