Ejemplo - International Olympiad in Informatics

Anuncio
InternationalOlympiadinInformatics2014
13-20thJuly2014
Taipei,Taiwan
wall
Day-1tasks
Language:es-CU
Wall
Jian-Jiaestaconstruyendounaparedapilandoladrillosdelmismotamaño.Estaparedconsistede
columnasdeladrillos,lascualesestannumeradasdesde0hasta
deizquierdaaderecha.Las
columnaspuedentenerdiferentesalturas.Laalturadeunacolumnaeselnumerodeladrillosqueesta
tiene.
Jian-Jiaconstruyelaparedcomosigue.Inicialmentenohayladrillosenningunacolumna.Entonces,
Jian-Jiavaatravesde fasesdeadicionaroeliminarladrillos.Elprocesodeconstruccionse
completacuandolas faseshayanfinalizado.EncadafaseaJian-Jialeesdadounrangode
columnasconsecutivasdeladrillosyunaaltura ,yelhaceelsiguienteprocedimiento:
Enunafasedeadicionarladrillos,Jian-Jiaagregaladrillosaaquellascolumnasenelrango
dadoquetienenmenosde ladrillos,detalmaneraqueestasquedenexactamentecon
ladrillos.Jian-Jianohacenadaenlascolumnasquetienen omásladrillos.
Enunafasedeeliminarladrillos,Jian-Jiaquitaladrillosdeaquellascolumnasenelrangodado
quetenganmásde ladrillos,detalmaneraquequedenconexactamente ladrillos.Jian-Jiano
hacenadaconlascolumnasquetienen ladrillosomenos.
Tutareaesdeterminarlaformafinaldelapared.
Ejemplo
Nosotrosasumimosquehay10columnasdeladrillosy6paredesenlasfasesdeconstruccion.Todos
losrangosenlasiguientetablasoninclusivos.Losdiagramasdelapareddespuesdecadafaseson
mostradosdebajo.
fase
0
1
2
3
4
5
tipo
adicionar
eliminar
eliminar
adicionar
adicionar
eliminar
rango
columnas1a8
columnas4a9
columnas3a6
columnas0a5
columna2
columnas6a7
altura
4
1
5
3
5
0
Yaquetodaslascolumnasestaninicialmentevacias,despuesdelafase0cadaunadelascolumnas
dela1ala8quedarancon4ladrillos.Lascolumnas0y9permanecenvacias.Enlafase1,los
ladrillossoneliminadosdesdelascolumnasdela4ala8hastaquecadaunadeellastenga1ladrillo,y
lacolumna9permanecevacia.Lascolumnasdela0ala3,lascualesestanfueradelrangodado,
permanecensincambiar.Lafase2nohacecambiosdesdelascolumnas3ala6puesnotienenmas
de5ladrillos.Despuesdelafase3elnumerodeladrillosenlascolumnas0,4,y5seincrementana3.
Hay5ladrillosenlacolumna2despuesdelafase4.Enlafase5seeliminantodoslosladrillosdela
1/3
columnas6y7.
Tarea
Dadaladescripciondelas fases,calculeelnumerodeladrillosencadacolumnadespuesquetodas
lasfasesfinalicen.UstednecesitaimplementarlafuncionbuildWall.
buildWall(n,k,op,left,right,height,finalHeight)
n:elnumerodecolumnasdelapared.
k:elnumerodefases.
op:arreglodetamaño ;op[i]eseltipodelafase :1paraunafasedeadicionary2
paraunafasedeeliminar,para
.
leftyright:arreglosdetamaño ;elnumerodecolumnasenlafase quecomienza
conlacolumnaleft[i]yfinalizaconlacolumnaright[i](incluyendoambos
extremosleft[i]yright[i]),para
.Ustedsiempretendraleft[i]
right[i].
height:arreglodetamaño ;height[i]eselparametrodelaalturadelafase ,para
.
finalHeight:arreglodetamaño ;usteddeberetornarsusresultadosubicandoel
2/3
numerofinaldeladrillosdelacolumna enfinalHeight[i],para
.
Subtaeas
Paratodaslassubtareaselparametrodealturaentodaslasfasessonenterosnonegativosmenoreso
igualesa
.
subtarea puntos
notas
1
8
sinlímitesadicionales
2
24
3
29
todaslasfasesdondeseagrega
vanprimero
sinlímitesadicionales
4
39
sinlímitesadicionales
Detallesdeimplementacion
Ustedtienequeenviarexactamenteunarchivo,llamadowall.c,wall.cpp,owall.pas.Este
archivoimplementaelsubprogramadescritoantesusandolossiguientesprototipos.Ustedtambién
necesitaráincluirunarchivodecabecerawall.hparalosprogramasescritosenC/C++.
programasenC/C++
voidbuildWall(intn,intk,intop[],intleft[],intright[],
intheight[],intfinalHeight[]);
programasenPascal
procedurebuildWall(n,k:longint;op,left,right,height:
arrayoflongint;varfinalHeight:arrayoflongint);
Ejemplodecalificador
Elejemplodegraderleeralaentradaconelsiguientefomato:
line1:n,k.
line
(
):op[i],left[i],right[i],height[i].
3/3
Descargar