Wakacje (Holiday) - International Olympiad in Informatics

Transkrypt

Wakacje (Holiday) - International Olympiad in Informatics
InternationalOlympiadinInformatics2014
13-20thJuly2014
Taipei,Taiwan
holiday
Day-2tasks
Language:pl-PL
Wakacje(Holiday)
Jian-JiaplanujespędzićswojenastępnewakacjenaTajwanie.Podczaswakacjibędziepodróżowałod
miastadomiasta,starającsięzwiedzićjaknajwięcejatrakcjiwróżnychmiastach.
NaTajwanieznajdujesię miastusytuowanychwzdłużjednejautostrady.Miastasąponumerowane
kolejnood0do
.Dlamiasta ,gdzie
,sąsiednimimiastamisą
oraz
.
Jedynymsąsiednimmiastemdlamiasta0jestmiasto1,ajedynymsąsiednimmiastemdlamiasta
jestmiasto
.
Wkażdymmieścieznajdujesiępewnaliczbaatrakcji.Jian-Jiamadodyspozycji dniwakacjiichce
wtymczasiezobaczyćmożliwienajwięcejatrakcji.Jużzdecydował,odktóregomiastarozpocznie
zwiedzanieTajwanu.KażdegodniapodczasswoichwakacjiJian-Jiamożealboprzemieścićsiędo
sąsiedniegomiasta,albozobaczyćwszystkieatrakcjewmieście,wktórymsięaktualnieznajduje.
Jednegodnianiemożejednocześniezwiedzaćmiastaiprzemieszczaćsięmiędzymiastami.Jian-Jia
nigdynieoglądaatrakcjiwtymsamymmieściedwukrotnie,nawetjeśliznajdziesiętamwielerazy.
PomóżJian-Jiazaplanowaćwakacjetak,żebyzobaczyłmożliwienajwięcejróżnychatrakcji.
Przykład
Załóżmy,żeJian-Jiama7dniwakacji,dozwiedzeniajest5miast(wymienionychwtabeliponiżej),a
zwiedzanierozpoczynasięodmiastaonumerze2.PierwszegodniaJian-Jiaodwiedza20atrakcjiw
mieście2.DrugiegodniaJian-Jiaprzemieszczasięzmiasta2domiasta3,atrzeciegodniazwiedza
wszystkie30atrakcjiwtymmieście.NastępnetrzydniJian-Jiaspędza,podróżujączmiasta3do
miasta0.SiódmegodniaJian-Jiazwiedza10atrakcjiwmieście0.Łącznaliczbaatrakcji
odwiedzonychprzezJian-Jiawynosi20+30+10=60,cojestnajwiększąmożliwąliczbąatrakcji,jakie
Jian-Jiamożeodwiedzićwciągu7dni,rozpoczynajączwiedzanieodmiasta2.
miasto
0
1
2
3
4
liczbaatrakcji
10
2
20
30
1
dzień
akcja
1
zwiedzaatrakcjewmieście2
2
przemieszczasięzmiasta2domiasta3
1/3
dzień
3
4
5
6
7
akcja
zwiedzaatrakcjewmieście3
przemieszczasięzmiasta3domiasta2
przemieszczasięzmiasta2domiasta1
przemieszczasięzmiasta1domiasta0
zwiedzaatrakcjewmieście0
Zadanie
NapiszfunkcjęfindMaxAttraction,któraobliczymaksymalnąliczbęatrakcjimożliwądo
odwiedzeniaprzezJian-Jia.
findMaxAttraction(n,start,d,attraction)
n:liczbamiast.
start:indeksmiasta,zktóregorozpoczynasięzwiedzanie.
d:liczbadni.
attraction:tablicarozmiaru ;attraction[i]jestliczbąatrakcjiwmieście ,dla
.
Wynikiemfunkcjipowinnabyćmaksymalnaliczbaatrakcjimożliwychdoodwiedzenia
przezJian-Jia.
Podzadania
Wewszystkichpodzadaniachzachodzi
nieujemnaliczbaatrakcji.
.Wkażdymmieścieznajdujesię
Dodatkoweograniczenia:
podzadanie
1
2
3
4
liczba
punktów
7
23
17
53
maxliczbaatrakcjiwjednym
mieście
1,000,000,000
100
1,000,000,000
1,000,000,000
miasto
startowe
dowolne
miasto0
dowolne
dowolne
Implementacja
Powinieneśzgłosićdokładniejedenplikonazwieholiday.c,holiday.cpplubholiday.pas.W
plikupowinnaznaleźćsięimplementacjafunkcjiopisanejpowyżej,onastępującejsygnaturze.W
przypadkuprogramuwC/C++powinieneśtakżezałączyć(include)pliknagłówkowyholiday.h.
2/3
Zauważ,żewynikmożebyćduży,adoprzechowywaniawynikufunkcjifindMaxAttractionjest
używany64-bitowytypcałkowity.
ProgramywC/C++
longlongintfindMaxAttraction(intn,intstart,intd,
intattraction[]);
ProgramywPascalu
functionfindMaxAttraction(n,start,d:longint;
attraction:arrayoflongint):int64;
Przykładowyprogramsprawdzający
Przykładowyprogramsprawdzającywczytujedanewnastępującymformacie:
wiersz1:n,start,d.
wiersz2:attraction[0],...,attraction[n-1].
PrzykładowyprogramsprawdzającywypiszenawyjściewynikfunkcjifindMaxAttraction.
3/3

Podobne dokumenty