InternationalOlympiadinInformatics2014 13-20thJuly2014 Taipei,Taiwan wall Day-1tasks Language:ru-RU Стена Джан-Джистроитстенуизкирпичейодинаковогоразмера.Стенасостоитиз столбцов кирпичей,пронумерованныхслеванаправоот до .Высотойстолбцаназывается количествокирпичейвнем.Устолбцовмогутбытьразныевысоты. Джан-Джистроитстенутак.Сначаланиводномизстолбцовнеткирпичей.ДалееДжан-Джи выполняет действий,каждоеизкоторыхможетбытьдействиемдобавленияилиудаления кирпичей.Строительствосчитаетсязаконченным,когдавыполненывсе действий.Перед каждымдействиемДжан-Дживыбираетинтервализпоследовательностоящихстолбцови высоту .Послеэтогоонвыполняетодноизследующихдействий: действиедобавления:Джан-Джидобавляеткирпичивстолбцыизвыбранногоинтервала, высотакоторыхменьшечем ,так,чтобыонасталаравной .Состолбцами,высота которыхнеменьше,чем ,онничегонеделает; действиеудаления:Джан-Джиубираеткирпичиизстолбцовизвыбранногоинтервала, высотакоторыхбольшечем ,так,чтобыонасталаравной .Состолбцами,высота которыхнебольше,чем ,онничегонеделает. Требуетсяопределитьконечнуюформустены. Пример Будемсчитать,чтостенасостоитиз10столбцовистроитсязашестьдействий.Все приведенныеинтервалывключаютграницы.Изображениястеныпослекаждогодействия представленынарисункениже. действие 0 1 2 3 4 5 вид добавление удаление удаление добавление добавление удаление интервал столбцыс1до8 столбцыс4до9 столбцыс3до6 столбцыс0до5 столбец2 столбцыс6до7 высота 4 1 5 3 5 0 Таккакизначальновсестолбцынесодержаткирпичей,топоследействия0каждыйиз столбцовсномерамиот1до8будетсодержатьпо4кирпича,столбцысномерами0и9будут пустыми.Последействия1встолбцахсномерамис4по8остаетсяодинкирпич,9-ый столбецостаетсяпустым.Столбцысномерамис0по3лежатвнеинтервалаинеменяются. Действие2неменяетстолбцысномерамис3по6,таккаквнихитакменьшепятикирпичей. Последействия3количествокирпичейвстолбцахсномерами0,4и5увеличиваетсядо3. Последействия4вовторомстолбцестановитсяпятькирпичей.За5-оедействиеизстолбцов 1/3 сномерами6и7убираютсявсекирпичи. Постановказадачи Позаданномуописанию действийопределитеколичествокирпичейвкаждомстолбцепосле того,каквседействиябудутвыполнены.ВыдолжныреализоватьфункциюbuildWall. buildWall(n,k,op,left,right,height,finalHeight) n:количествостолбцов; k:количестводействий; op:массивдлины ;op[i]тип -годействия:1,еслиэтодействиедобавления кирпичей,и2,еслиэтодействиеудалениякирпичей; leftиright:массивыдлины ;интервалдля -годействияначинаетсясо столбцаleft[i]изаканчиваетсястолбцомright[i](включаяобаконца left[i]иright[i]);left[i]всегданепревосходитright[i]; height:массивдлины ;height[i]высотадля -годействия; finalHeight:массивдлины ;выдолжнызаписатьконечноеколичество кирпичейвстолбце вfinalHeight[i]. 2/3 Подзадачи Вовсехподзадачахвсевысотынепревосходят Подзадача Баллы 1 8 2 24 3 29 4 39 . Комментарий нетдополнительных ограничений вседействиядобавления будутдодействийудаления нетдополнительных ограничений нетдополнительных ограничений Деталиреализации Выдолжныпослатьровноодинфайл,названныйwall.c,wall.cppилиwall.pas.Вэтом файледолжнабытьреализованафункция,описаннаявыше,суказаннымнижепрототипом.На языкахC/C++выдолжныподключитьзаголовочныйфайлwall.h. ЯзыкC/C++ voidbuildWall(intn,intk,intop[],intleft[],intright[], intheight[],intfinalHeight[]); ЯзыкPascal procedurebuildWall(n,k:longint;op,left,right,height: arrayoflongint;varfinalHeight:arrayoflongint); Примерпроверяющегомодуля Предоставленныйпримерпроверяющегомодуляимеетследующийформатвводаданных: строка1:n,k. строки ( ):op[i],left[i],right[i],height[i]. 3/3