InternationalOlympiadinInformatics2014 13-20thJuly2014 Taipei,Taiwan wall Day-1tasks Language:es-MX Wall(Muro) Jian-Jiaestáconstruyendounmuroconladrillostodosdelmismotamaño.Elmurotiene columnasde ladrillosnumeradasde a deizquierdaaderecha.Lascolumnaspuedentenerdistintasalturas dependiendodelnúmerodeladrillosenellas. Jian-Jiaconstruyeelmurodelasiguienteforma.Inicialmentenohayladrillosenningunacolumna. Después,Jian-Jiarealiza fasesdeagregaroquitarladrillos.Elprocesodeconstruccióntermina cuandolas faseshansidocompletadas.EncadafaseJian-Jiarecibeunrangodecolumnas contiguasyunaaltura conlosquerealizaelsiguienteprocedimiento: Enlasfasesdeagregar,Jian-Jiaagregaladrillosaaquellascolumnasdelrangoquetienen menosde ladrillosdemodoquequedenconexactamente ladrillos.Élnoagreganingún ladrilloalascolumnasquetienen omásladrillos. Enlasfasesdequitar,Jian-Jiaquitaladrillosdeaquellascolumnasdelrangoquetienenmásde ladrillosdemodoquequedenconexactamente ladrillos.Élnoquitaningúnladrillodelas columnasquetienen omenosladrillos. Tutareaesdeterminarlaformafinaldelmuro. Ejemplo Supónquehay10columnasdeladrillosy6fasesdeconstrucción.Todoslosrangosdelasiguiente tablasonintervaloscerrados.Losdiagramasdecadafasesemuestrandebajo. fase 0 1 2 3 4 5 tipo agregar quitar quitar agregar agregar quitar rango columnas1a8 columnas4a9 columnas3a6 columnas0a5 columna2 columnas6a7 altura 4 1 5 3 5 0 Aliniciotodaslascolumnasestánvacías,despuésdelafase0cadaunadelascolumnasdela1ala8 tiene4ladrillos,lascolumnas0y9permanecenvacías.Enlafase1,sequitanladrillosdelascolumnas 4ala8hastaquecadaunadeellastenga1ladrillo,lacolumna9permanecevacíaylascolumnasde la0ala3quedansincambios.Lafase2nocambiaelmurodadoquelascolumnasdela3ala6no tienenmásde5ladrillos.Despuésdelafase3elnúmerodeladrillosenlascolumnas0,4y5se incrementaa3.Alfinalizarlafase4hay5ladrillosenlacolumna2.Lafase5quitatodoslosladrillos delascolumnas6y7. 1/3 Problema Escribeunprogramaquedadaladescripcióndelas fases,calculeelnúmerodeladrillosencada columnaalfinalizartodaslasfases.NecesitarásimplementarlafunciónbuildWall. buildWall(n,k,op,left,right,height,finalHeight) n:elnúmerodecolumnasenelmuro. k:elnúmerodefases. op:unarreglodelongitud dondeop[i]eseltipodelafase :1paraunafasede agregary2paraunafasedequitar,para . leftyright:arreglosdelongitud representandoqueelrangodecolumnasenlafase iniciaenlacolumnaleft[i]yterminaenlacolumnaright[i](incluyendolos extremosleft[i]yright[i]),para .Siempresecumpleleft[i] right[i]. height:unarreglodelongitud dondeheight[i]eslaalturaparalafase ,para . finalHeight:unarreglodelongitud ;deberásrepresentartusresultadoscolocandoel númerofinaldeladrillosdelacolumna finalHeight[i],para . 2/3 Subproblemas Paratodoslossubproblemaslasalturasdelasfasesseránenterosnonegativosmenoresoigualesa . subproblema puntos 1 nota 8 sinlímitesadicionales 2 24 3 29 todaslasfasesdeagregar seencuentranantesdelas fasesdequitar Sinlímitesadicionales 4 39 sinlímitesadicionales Detallesdeimplementación Debesenviarsólounarchivo,llamadowall.c,wall.cppowall.pas.Estearchivodebe implementarlafuncióndescritaarribausandoelsiguienteprototipo.Ademásnecesitarásincluirel archivowall.hparaelcasodeprogramasenC/C++. ProgramaenC/C++ voidbuildWall(intn,intk,intop[],intleft[],intright[], intheight[],intfinalHeight[]); ProgramaenPascal procedurebuildWall(n,k:longint;op,left,right,height: arrayoflongint;varfinalHeight:arrayoflongint); Evaluadordeprueba Elevaluadordepruebaleelaentradaenelsiguienteformato: línea1:n,k. línea ( ):op[i],left[i],right[i],height[i]. 3/3