100647467

Page 1


Spistreści

25latOlimpiady Informatycznej 9

EdycjeOlimpiadyInformatycznej ··· 13

Sukcesywolimpiadachmiędzynarodowych ··· 13

ŹródłasukcesówOlimpiadyInformatycznej ··· 19

Ozadaniach ··· 21

Oksiążce ··· 21

Oredaktorach ··· 24

Zadania–częśćpierwsza

Rozgrzewka

Lizak 29

Minusy 33

Trójkątyjednobarwne 38

Liczbyantypierwsze 40

Kosztzamortyzowany

Krążki ··· 45

Gdziezbudowaćbrowar? ··· 51

Stos

Plakatowanie 55

TetrisAttack 63

Przeszukiwaniegrafów Równanienasłowach ··· 68

Jedynkiizera ··· 72

Agenci ··· 76

Algorytmyzachłanne

Szeregowanieczynności ··· 80

RozkładFibonacciego ··· 86

Programowaniedynamiczne I

Rezerwacjasalwykładowych ··· 93

Różnica ··· 97

Zająknięcia 102

Drzewa

Dostawcapizzy 109

Łuktriumfalny ··· 117

Wielokąt ··· 122

AlgorytmygrafoweI

Odległość ··· 127

Zawody ··· 132

Dziuple ··· 137

Żabka 143

Zadania–częśćdruga

Drzewaprzedziałowe

Kurierzy 157

Kopalniazłota 165

Klocki 170

Meteory 181

Wilczedoły 185

AlgorytmygrafoweII

Przedsięwzięcie ··· 189

Hazard ··· 196

Drogizmiennokierunkowe ··· 201

Zadanianabibliotekę

KolekcjonerBajtemonów 205

Gdziejestjedynka? 210

Architekci 215

Meetinthemiddle

Szyfr ··· 224

Panelesłoneczne ··· 230

Algorytmytekstowe

Korale 234

Okresysłów 238

Palindromy 242

ProgramowaniedynamiczneII

Kupnogruntu ··· 248

Szatnia ··· 256

Zapiekanki ··· 262

AlgorytmygrafoweIII

Autostrady ··· 270

Magazynier ··· 276

Gońcy 280

Kości 286

Inne

Pionek ··· 294

Lunatyk ··· 304

Gra ··· 309

Pionki ··· 315

Technikialgorytmiczneistrukturydanych

Drzewoprzedziałowe ··· 325

Strukturydlauporządkowanegomultizbioru ··· 325

Drzewoprzedziałowetypupunkt–przedział ··· 335

Drzewoprzedziałowetypuprzedział–punkt ··· 340

Drzewoprzedziałowetypuprzedział–przedział ··· 344

Codalej? 348

Kolejkaminimów 349

Implementacjakolejki 349

Kolejkadladowolnejoperacjiłącznej ··· 352

Haszowanienapisówisłownikpodsłówbazowych ··· 354

Słownikpodsłówbazowych ··· 354

Haszowanienapisów ··· 356

Zastosowania ··· 357

Jakdobieraćparametrywhaszowaniu? ··· 360

Drzewopalindromów 365

Opisdrzewa 365

Konstrukcjadrzewapalindromów 366

Zastosowania 369

Rozwiązaniezadania Palindromy ··· 369

Kolejnetematy ··· 375

Bibliografia ··· 383

Indekszadań ··· 384

25latOlimpiadyInformatycznej

OlimpiadaInformatycznanarodziłasięwrokuszkolnym1993/1994jakonajmłodsza olimpiadaprzedmiotowawPolscewobszarzenaukścisłychiprzyrodniczych.CelemOlimpiadyjestumożliwianieuczniomuzdolnionyminformatycznieuczestnictwa wszlachetnejrywalizacjinawiedzęiumiejętnościzrówieśnikamizcałegokrajuoraz wyłanianienajlepszychznich,którzypóźniejmierząsięznajlepszymimłodymiinformatykamizcałegoświata.UczestnicyOlimpiadymusząwykazaćsięumiejętnościami analizowaniaproblemówobliczeniowych,układaniawydajnychalgorytmówiimplementowaniaichwjęzykachprogramowaniawysokiegopoziomu,doborustosownych strukturdanych,testowaniaprogramów,pracywśrodowiskuprogramistycznym.Po prostumusządziałaćtak,jakzawodowiinformatycy.

OlimpiadaInformatycznatorealizacjamarzeńnaukowców,edukatorówipopularyzatorówinformatyki,którzyweszliwskładpierwszegoKomitetuGłównegoOlimpiadyInformatycznejutworzonegonamocy AktupowołaniaOlimpiadyInformatycznej zdnia10grudnia1993roku,podpisanegoprzezówczesnegodyrektoraInstytutu InformatykinaUniwersytecieWrocławskim,profesoraMaciejaM.Sysłę.Siedzibą OlimpiadyInformatycznejdodziśjestOśrodekEdukacjiInformatycznejiZastosowańKomputerów(OEIiZK)wWarszawie.WskładziepierwszegoKomitetuGłównegoOlimpiadyInformatycznejznaleźlisię:

prof.drhab.inż.JacekBłażewiczPolitechnikaPoznańska prof.drhab.JanMadey UniwersytetWarszawski prof.drhab.AndrzejW.MostowskiUniwersytetGdański prof.drhab.WojciechRytterUniwersytetWarszawski prof.drhab.MaciejM.SysłoUniwersytetWrocławski drhab.inż.StanisławWaligórskiUniwersytetWarszawski drPiotrChrząstowski-WachtelUniwersytetWarszawski drAndrzejWalat OEIiZK drBolesławWojdyło UniwersytetMikołajaKopernikawToruniu mgrJerzyDałek MinisterstwoEdukacjiNarodowej mgrKrzysztofJ.Święcicki MinisterstwoEdukacjiNarodowej TadeuszKuran OEIiZK mgrKrystynaKominek IILOim.StefanaBatoregowWarszawie

Pierwszymprzewodniczącym KomitetuGłównegozostałdrhab.inż.Stanisław Waligórski,sekretarzemnaukowym–drAndrzejWalat,akierownikiemorganizacyjnym–TadeuszKuran,którypełnitęfunkcjędodziś(obecniemaonanazwękoordynatoraOlimpiady).FunkcjęsekretarzaKomitetuobjęłamgrKrystynaKominek.Skład Komitetuodzwierciedlałzaangażowaniewielupodmiotów–najlepszychuczelniinformatycznychwkraju,MinisterstwaEdukacjiNarodowej,środowiskanauczycielskiego –wdziałanianarzeczedukacjiinformatycznejpolskiejmłodzieży.Wpóźniejszym okresiedotegogronadołączyłyteżpolskiefirmyinformatyczne.Ścisławspółpraca najlepszychuczelniinformatycznych,edukatorówinformatykiifirminformatycznych lubtychdziałającychnarzeczrozwojuinformatykijestcharakterystycznadladziałań OlimpiadyInformatycznejtakżeidzisiaj.

TwórcyOlimpiadyInformatycznejopracowalistandardyprzeprowadzaniazawodówOlimpiady,którewswoichpodstawachobowiązujądodziś.WprzyjętymregulaminieokreślononastępująceceleOlimpiadyInformatycznej:

(1)Stwarzaniemotywacjidozainteresowanianauczycieliiuczniównowymimetodami informatyki.

(2)Rozszerzaniewspółdziałaniamiędzynauczycielamiakademickimiinauczycielami szkółwkształceniumłodzieżyuzdolnionej.

(3)Stymulowanieaktywnościpoznawczejmłodzieżyinformatycznieuzdolnionej.

(4)Kształtowanieumiejętnościsamodzielnegozdobywaniaorazrozszerzaniawiedzy informatycznej.

(5)Stwarzaniemłodzieżymożliwościszlachetnegowspółzawodnictwawrozwijaniu swoichuzdolnień,anauczycielom–warunkówtwórczejpracyzmłodzieżą.

(6)WyłanianiereprezentacjiRzeczypospolitejPolskiejnaMiędzynarodowąOlimpiadęInformatyczną.

Przez25latOlimpiadyInformatycznejskładKomitetuGłównegozmieniałsię wsposób,którypozwalałnazachowanieciągłościpracyidoskonaleniedziałańOlimpiady.Komitetprzedewszystkimotwierałsięnabyłycholimpijczyków,którychdoświadczeniazestartuwOlimpiadzieprzyczyniałysiędodoskonaleniajejorganizacji iciągłegopodnoszeniapoziomumerytorycznego.WtabelinanastępnejstroniezawartowykazwszystkichosóbbiorącychudziałwpracachKomitetuGłównegoOlimpiady Informatycznejnaprzestrzeniostatnich25lat.DlakażdejosobypodanoedycjeOlimpiadyorazewentualnąfunkcjępełnionąwKomitecie;tytułyistopnienaukowesą aktualne,aleafiliacjepodanonadzieńprzystąpieniadoKomitetu.

OlimpiadaInformatycznatokonkurstrzyetapowy.Wkażdymetapieuczniowie dostająpewnąliczbęzadańdorozwiązania.Każdezadanietokrótkahistoryjkaopisującaukrytyproblemalgorytmiczny.Rozwiązaniemzadaniajestzazwyczajalgorytm zapisanywpostaciprogramuwwybranymprzezzawodnikajęzykuprogramowania. Poprawniekompilującesięprogramysąnastępnieuruchamianenanieznanychdla zawodnikówtestachprzygotowanychprzezorganizatorów.Testysątakdobrane,żebywykrywałyprogramyniepoprawneiróżnicowałyrozwiązaniaoróżnejzłożoności obliczeniowej,szczególniezłożonościczasowej–złożonośćpamięciowajestwymuszanaprzezpodaneexpliciteograniczenianawielkośćwykorzystywanejprzezprogram pamięci.WOlimpiadzieliczbapunktówotrzymanazazadaniezależyodjakości zaproponowanegoalgorytmuijegoimplementacji.

Zająknięcia

XXIIIOlimpiadaInformatyczna(2015/2016),etapII

Autorzadania:TomaszSyposz

Opisrozwiązania:JakubRadoszewski

Limitpamięci:32MB https://oi.edu.pl/pl/archive/oi/23/zaj

Bitekzapadłostatnionadziwnąchorobę:straszniesięjąka,aprzytymjedynesłowa, którewypowiada,toliczby.Jegostarszybrat,Bajtek,zauważyłjednakdziwnąpowtarzalnośćwzająknięciachBitka.Podejrzewa,żeBitektaknaprawdęudaje,żebynie chodzićdoszkołyimócwięcejgraćnakomputerze.Bajtekniemożeprzeztouczyć sięprogramowaniaijestztegopowodubardzosmutny.Postanowiłwięczdemaskować młodszegobratailiczy,żewnagrodębędziemiałtyleczasunaprogramowanie,ile duszazapragnie.

OpiszmyformalniepodejrzeniaBajtka.Załóżmy,żemamydanyciągliczb A

• Podciągiem ciągu A nazywamyciągpowstałyprzezwyrzuceniez A dowolnych wyrazów,np.1, 1, 7, 5jestpodciągiemciągu1, 3, 1, 7, 6, 6, 5, 5,natomiast1, 5, 7 nimniejest.

• Zająknięciem ciągu A nazywamypodciąg A,któryskładasięzustawionychpo koleipartakichsamychwyrazów,np.1, 1, 1, 1, 3, 3oraz2, 2sązająknięciami ciągu1, 2, 1, 2, 1, 2, 1, 3, 3,natomiast1, 2, 1, 2oraz2, 2, 2niminiesą.

Formalniezająknięciejestpodciągiempostaci a1,a2,a3,...,a2k 1,a2k,gdzie a2i 1 = a2i dla1 i k.

MającdanedwiewypowiedziBitkajakociągiliczb,pomóżBajtkowistwierdzić,jakajestdługośćnajdłuższegozająknięcia,którewystępujewkażdymztychciągów, anagrodacięnieominie.

Wejście

Pierwszywierszwejściazawieradwieliczbycałkowite n oraz m (n,m 2)oznaczającedługościciągów A i B,którereprezentująwypowiedziBitka.Wdrugimwierszuwejściaznajdujesię n liczbcałkowitych a1,a2,...,an,czylikolejnewyrazyciągu A (1 ai 109).Wtrzecimwierszuwejściaznajdujesię m liczbcałkowitych b1,b2,...,bm,czylikolejnewyrazyciągu B (1 bi 109).

Wyjście

Twójprogrampowinienwypisaćnawyjściejednąnieujemnąliczbęcałkowitąoznaczającądługośćnajdłuższegowspólnegozająknięciaciągów A i B.Jeśliciąginiemają żadnegowspólnegozająknięcia,poprawnymwynikiemjest0.

Dladanychwejściowych: 79 1223111 242312411 poprawnymwynikiemjest: 4

Wyjaśnienieprzykładu: Szukanymciągiemjest2,2,1,1.

Ocenianie

Zestawtestówdzielisięnapodzadaniaspełniająceponiższewarunki.Testydokażdego podzadaniaskładająsięzjednejlubwiększejliczbyosobnychgruptestów.

Podzadanie Warunki Liczbapunktów

n,m 2000

2 n,m 15000ikażdaliczbawkażdym ciąguwystępujeconajwyżejdwarazy

Rozwiązanie

Wzadaniudanesądwaciągiliczb A =(a1,...,an)i B =(b1,...,bm).Wopisie rozwiązaniazamiastowartościachelementówciągówwygodniejnambędziemówić oichkolorach,takwięcnp. ai będzieoznaczaćkolor i-tegoelementuciągu A.Naszym celemjestznaleźćnajdłuższewspólnezająknięcieciągów A i B,czylinajdłuższyciąg kolorówzłożonyzparamipowtarzającychsięelementów,któryjestpodciągiemkażdegozciągów A i B.Coistotne,wodpowiedziwystarczypodaćdługośćnajdłuższego wspólnegozająknięcia.

Najdłuższywspólnypodciąg

Naszezadanieewidentniemazwiązekzproblememznajdowanianajdłuższegowspólnegopodciągudwóchciągów.Rozważaniazacznijmywięcodprzypomnieniaklasycznegorozwiązaniategoproblemuzapomocąprogramowaniadynamicznego(patrznp. książka Wprowadzeniedoalgorytmów [6]).Wyznaczasięwnimdwuwymiarowątablicę NWP rozmiaru(n +1) × (m +1),takąże NWP[i,j]oznaczadługośćnajdłuższego wspólnegopodciąguciągów a1,...,ai oraz b1,...,bj .Szukanymwynikiemjestoczywiście NWP[n,m].Mamynastępującązależnośćrekurencyjną:

NWP[i,j]=

jeżeli i =0lub j =0, NWP[i 1,j 1]+1

jeżeli ai = bj , max(NWP [i 1,j], NWP[i,j 1])wprzeciwnymprzypadku.

IXOlimpiadaInformatyczna(2001/2002),etapIII Autorzadaniaiopisurozwiązania:WojciechGuzicki Limitpamięci:32MB

https://oi.edu.pl/pl/archive/oi/9/szy

Danyjestciąg n dodatnichliczbcałkowitych a1,a2,...,an.Ciągtenjestużywany doszyfrowania n-bitowychwiadomości.Jeślimamywiadomość,którejkolejnebity tworząciąg t1,t2,...,tn (ti ∈{0, 1}),topozaszyfrowaniumaonapostaćliczby

Maszdanązaszyfrowanąwiadomośćorazciągliczb(ai),któregoużytodojej zaszyfrowania.Twojezadaniepoleganaodkodowaniuzaszyfrowanejwiadomości.

Wejście

Wpierwszymwierszuwejściaznajdujesięjednaliczbacałkowita n (5 n 40). Wkolejnych n wierszachjestzapisanyciągliczb a1,a2,...,an.Sumaliczb ai nie przekracza2000000000.Wkolejnymwierszuzapisanajestjednaliczbacałkowita S –zaszyfrowanawiadomość(0 S a1 + a2 + ... + an).

Wyjście

Wjedynymwierszuwyjścianależyzapisaćkolejneliczby ti,bezżadnychodstępówmiędzynimi.Danetestowezostałydobranetak,żezaszyfrowanewiadomościsą określonejednoznacznie.

Przykład

Dladanychwejściowych: 24 19226985 123697 67356296 19721773 1113273 69335448 23680077 9029881 85168664 93676782 5253843 77616588 78572630 13375812 17199980 101508862 59248276 3505733 35790095 62028546 85726819 56462819 103373994 91757169 667509506 poprawnymwynikiemjest: 110001000101101100010101

Rozwiązanie

Problem,którymamyrozwiązać, jestszczególnymprzypadkiemtzw.problemupakowaniaplecaka.WcałejogólnościzostałonbardzodobrzeopisanywksiążceMacieja M.Sysły Algorytmy [13],gdziewszczególnościmożnaznaleźćdośćskutecznealgorytmyopartenametodzieprogramowaniadynamicznego.Tegotypurozwiązanieproblemuplecakowegowystępujetakżewopracowaniuzadania Szatnia nastronie256. Wspomnianerozwiązaniadziałajądobrzewtedy,gdysumaliczb W = a1 +a2 + +an jestdośćmała(złożonośćwynosi O(nW )).Wnaszymprzypadku,gdyliczba W może wynosićokoło2 109,tealgorytmysąnieprzydatne.

Zadanieniemadobregorozwiązania.Mianowiciejeślidanesądowolneliczbycałkowite a1,a2,...,an iliczbacałkowita S,tozadaniepolegającenaznalezieniuciągu t1,t2,...,tn owyrazachzezbioru {0, 1},takiegoże t1a1 + t2a2 + ... + tnan = S, jestproblememNP-zupełnym.Niemożemywięcspodziewaćsięrozwiązaniadziałającegowczasiewielomianowym.Jedyneznanerozwiązaniategoproblemuwogólności działająwczasiewykładniczym.Przyjrzyjmysięzatemtakimrozwiązaniom.

Najbardziejnarzucasięmetodaprzeszukaniawszystkichciągówzero-jedynkowych; teżtrzebatozrobićzręcznie,bywielokrotnieniedodawaćdosiebietychsamychliczb. Takiprogramdziaławczasie O(2n).

Skuteczniejszajestmetodaprzeszukiwaniaznawrotami.Polegaonanaprzeglądaniuwszystkichprzypadków,któremogąprowadzićdorozwiązania.Przypuśćmy, żewdanymmomenciezdecydowaliśmysięwybraćliczby t1,t2,...,tk,gdzie k<n Niech

Suma = t1a1 + t2a2 + + tkak

Mamyteraznastępującemożliwości:

• Jeśli Suma >S,todalszeposzukiwanianiemająsensuimusimycofnąćsiędo ciąguliczb t1,t2,...,tk 1.

• Jeśli Suma + ak+1 + ... + an <S,towtakimprzypadkuteżmożemyzakończyć poszukiwaniaicofnąćsiędociąguliczb t1,t2,...,tk 1.

• Jeśliniezachodziżadnezpowyższych,torozważamydwaprzypadki: tk+1 =0 oraz tk+1 =1.

Takmożewyglądaćzapistegopomysłuwpseudokodzie:

1: function Rek (k, Suma)

2: begin

3: if Suma >S or Suma + pk+1 <S thenreturn; 4: elseif k = n then

5: wypiszciąg t1,...,tn jakorozwiązanie;

6: elsebegin

7: tk+1 :=0; Rek (k +1, Suma);

8: tk+1 :=1; Rek (k +1, Suma + ak+1);

9: end

10: end

Drzewoprzedziałowe

Drzewoprzedziałowejestjednązważniejszychstrukturdanychwarsenaleolimpijczykawykorzystywanąwrozwiązaniachwieluzadań.Niemniejjednakinformacjina jegotematpróżnoszukaćwstandardowychpodręcznikachdoalgorytmówipublikacjachnaukowych.Tostrukturadanychtypowoolimpijska:nadajesiędozastosowań,wktórychznanejestograniczeniegórnenarozmiarprzechowywanychdanych iwktórychzależynamnaprostocieimplementacji.Wpodręcznikachczęściejznajdziemyopisyzrównoważonychdrzewbinarnych,takichjakdrzewaczerwono-czarne czydrzewaAVL.

Artykułtenjestpróbązebraniaiuporządkowaniazagadnieńdotyczącychdrzewa przedziałowego,któredotychczasbyłyrozproszonewniebieskichksiążeczkach,ale zawierarównieżtreści,któredotejporyniedoczekałysięopisuwliteraturze.

Strukturydlauporządkowanegomultizbioru

Zaczniemyodnajprostszegozastosowaniadrzewaprzedziałowego,amianowiciezaimplementujemyzajegopomocąstrukturędanychumożliwiającąprzechowywanie uporządkowanegomultizbioruliczbcałkowitychiwykonywanienanimokreślonych operacji.Wzależnościodrodzajupotrzebnychnamoperacjitakąstrukturędanych możnazrealizowaćwmniejlubbardziejprostysposób.Ztegoteżpowoduprzedstawimyażczterymożliweimplementacje:zapomocątablicy,kontenerówzestandardowej bibliotekiC++orazdwóchszczególnychprzypadkówdrzewaprzedziałowego–drzewa licznikowegoidrzewapotęgowego.

Multizbiórtouogólnieniezbioru,wktórymwartościmogąsiępowtarzać.Przykładowo {1, 2, 4, 4, 4, 5} jestmultizbiorem,wktórymwystępująwartości1,2,4i5, przyczymwartość4występujetrzykrotnie.Multizbiórtenma6elementów.Liczbę wystąpieńwartościnazywamyjejkrotnością(takwięcwartość4makrotność3,wartość1makrotność1,awartość3makrotność0).Najbardziejpodstawoweoperacje, którepotrzebujemywykonywać,żebywogólemówićomultizbiorzeliczb,to:

• init(S):utworzeniepustegomultizbioru S;

• insert(S,x):wstawienienowegoelementuowartości x domultizbioru S;

• remove(S,x):usunięciejednegoelementuowartości x zmultizbioru S;

• count(S,x):podanie,ileelementówowartości x znajdujesięwmultizbiorze S;

• size(S):podanieliczbywszystkichelementówwmultizbiorze S

Reprezentacjatablicowa

Napoczątekprzyjmijmyzałożenie,żewszystkiemożliwewartości,któremożemy wstawiaćdomultizbioru,sąliczbamicałkowitymizprzedziałuod1do n,przyczym wartość n jestnatylenieduża,żepozwalanamużyćstrukturydanychwykorzystującej O(n)komórekpamięci.

Najprostszaimplementacjamultizbiorupoleganatrzymaniutablicy,wktórejzapisujemykrotnościposzczególnychwartościmultizbioru.Niech cx oznaczakrotność

wartości x (czyliliczbęelementówowartości x)wmultizbiorze S.Operacja init(S) tworzy n-elementowątablicę t[1 ..n],początkowowypełnionązerami.Będziemyutrzymywaliniezmiennik,że t[x]= cx dla1 x n.Będziemyteżosobnopamiętali wartość C = 1 i n ci

Operacja insert(S,x)zwiększaojedenwartości t[x]oraz C.Analogicznieoperacja remove(S,x)zmniejsza t[x]oraz C ojeden.Mamyrównież count(S,x)= t[x]oraz size(S)= C.Wszystkieteoperacjedziałająwczasiestałym.

Konteneryzbibliotekistandardowej

Jeślimultizbiór S jestniepusty,tomożemychciećwykonywaćdodatkoweoperacje polegającenaznajdowaniuwartościspełniającychpewnekryteria:

• minimum(S), maximum(S):znalezienienajmniejszejlubnajwiększejwartości wmultizbiorze S;

• pred(S,x), succ(S,x):znalezieniewartościpoprzedzającej x (największejmniejszejod x)lubnastępującejpo x (najmniejszejwiększejod x)wmultizbiorze S WprzypadkuimplementacjitablicowejtakieoperacjebędąwymagaływpesymistycznymprzypadkuczasuΘ(n).

AlejeśliprogramujemywjęzykuC++,todozaimplementowaniamultizbioru możemywykorzystaćkontener multiset dostępnywstandardowejbibliotecejęzyka: #include<set> usingnamespacestd; multiset<int>S;

Podstawoweoperacjeprzedstawionepoprzedniowyglądająnastępująco:

Operacja Kod init(S) (automatycznie) insert(S,x) S.insert(x); remove(S,x) S.erase(S.find(x)); count(S,x) returnS.count(x); size(S) returnS.size();

Wartozwrócić uwagę,żeoperacjausunięciatoniejestpoprostu S.erase(x),bo takiewywołanieusunie wszystkie wystąpieniawartości x zmultizbioru.

Wszystkieteoperacje(opróczostatniej)działająwczasie O(log C),gdzie C jest liczbąelementówwmultizbiorze S.Operacja size(S)działawczasiestałym.Możemy teżwykonaćczterynoweoperacje,zktórychkażdadziaławczasie O(log C):

Operacja Kod minimum(S) return*S.begin(); maximum(S) autoit=S.end(); return*--it; succ(S, x) return*S.upper_bound(x); pred(S,x) autoit=S.lower_bound(x); return*--it;

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.