Sunteți pe pagina 1din 10

Articol aprut n Gazeta de Informatic - nr 15/3 - martie 2005

Algoritmul FILL. TEORIE i APLICAII


Radu Viinescu, Violeta Viinescu
Articolul prezint aspectele teoretice, cu implemetri recursive i iterative ale algoritmului FILL,
urmate de o serie de aplicaii i adaptri n probleme de concurs.
Algoritmul FILL este privit cu in-dulgent de muli programatori, fi-ind considerat un caz banal. Este ade-vrat, dar utilizarea
sa presupune atunci stpnirea mecanismului re-cursivitii.
Pe de alt parte, considerm c acest algoritm este sugestiv n ceea ce privesc aspectele lui teoretice si leg-turile sale cu
tehnica backtracking i cu parcurgerea n adncime a unui graf.

Consideraii teoretice
Algoritmul FILL realizeaz umple-rea (colorarea) unei suprafee nchise. Considerm o matrice ale crei ele-mente pot avea una
dintre valorile 1 i 0 cu semnificaia: 1 reprezint un perete, iar 0 o zon liber.
Pornind dintr-o zon de valoare 0, algoritmul trebuie s coloreze cu valoarea 2 toate celelalte celule n ca-re se poate ajunge
mergnd un nu-mr finit de pai pe direciile: sus, jos, stnga, dreapta.
Pentru simplitate, considerm c matricea este bordat cu elemente a cror valoare este 1. Algoritmul recursiv este urmtorul:
algoritm fill(X, Y)
dac AXY = 0 atunci
AXY 2
fill(X, Y + 1)
fill(X + 1, Y)
fill(X, Y - 1)
fill(X - 1, Y)
sfrit dac
sfrit algoritm

Putem prezenta acelai algoritm ntro form care pune n eviden caracterul
de backtracking al acestuia:
DX (0, 1, 0, -1)
DY (1, 0, -1, 0)
algoritm fill2(X, Y)
dac AXY = 0 atunci
AXY 2
pentru I 1, 4 execut
fill2(X + DXI, Y + DYI)
sfrit pentru
sfrit dac
sfrit algoritm

Dac privim matricea ca fiind re-prezentarea unui graf neorientat n care nodurile sunt reprezentate de celulele matricei, iar
muchiile sunt reprezentate de perechi de celule adi-acente de valoare 0, algoritmul FILL reprezint o particularizare a opraiei de
parcurgere n adncime a grafuri-lor (DF).
n figura anterioar este prezentat succesiunea acestor apeluri pen-tru un caz particular, n situaia n care ordinea apelurilor
recursive co-respunde direciilor est, sud, vest, nord.
n cursul executrii algoritmului prin fiecare celul a matricei se trece o singur dat (un singur apel). Din acest motiv, dei se
comport ca un algoritm de cutare cu revenire (backtracking), ordinul de complexitate al algoritmului este O(N*M), unde N i M
reprezint dimensiunile matricei. Ordinul de complexitate este polinomial, spre deosebire de majoritatea cazurilor n care este utilizat
tehnica backtracking.
Prezentm acum o variant iterativ de implementare a acestui algoritm.

algoritm fill_iterativ(X,Y)
dac AXY = 0 atunci
K1
AXY 2
ST1K X
ST2K Y
ct timp K > 0 execut
continu adevrat
X ST1K
Y ST2K
ct timp continu
execut
continu fals
dac X > 1 i AX-1,Y = 0
i nu continu
atunci
continu adevrat
AX-1,Y 2

KK+1
ST1K ST1,K-1 - 1
ST2K ST2,K-1
sfrit dac
dac X < N i AX+1,Y = 0
i nu continu
atunci
continu adevrat
AX+1,Y 2
KK+1
ST1K ST1,K-1 + 1
ST2K ST2,K-1
sfrit dac
dac Y > 1 i AX,Y-1 = 0
i nu continu
atunci

dac Y < M i AX,Y+1 = 0


i nu continu
atunci
continu adevrat
AX,Y+1 2
KK+1
ST1K ST1,K-1
ST2K ST2,K-1 + 1
sfrit dac
sfrit ct timp
KK-1
sfrit ct timp
sfrit dac
sfrit algoritm

continu adevrat
AX,Y-1 2
KK+1
ST1K ST1,K-1
ST2K ST2,K-1 - 1
sfrit dac

Aplicaii
Labirint
Un labirint este codificat printr-o matrice binar cu N l inii i M coloane. Considerm c singura ieire din labirint este celula
de coordonate (N,M). Fiind dat o celul oarecare din labirint, ale crei coordonate sunt (X,Y), s se determine un drum de la
aceasta i pn la ieirea din labirint. Nu este neaprat necesar ca drumul determinat s aib lungimea minim.
Bil
Se consider o matrice A cu N l inii i M coloane ale crei elemente sunt numere naturale. Elementele acestei matrice
reprezint nlimile unor zone. O bil pornete dintr-o celul a matricii i se poate deplasa la fiecare pas n celulele nvecinate pe
orizontal sau vertical dac i numai dac celula destinaie are o nalime mai mic sau egal dect cea din care a plecat.
Astfel, dup un anumit numr de pai, bila poate ajunge pe o margine a matricei. S se
determine perechile de co-ordonate ale celulelor din care bila nu poate ajunge la margine.
Soluie
Prezentm n continuare soluia n pseudocod. Este utilizat o matrice auxiliar B ale crei elemente
sunt valori logice.
subalgoritm fill(L, C)
dac nu BLC atunci
BLC adevrat
dac L < N i AL+1,C ALC atunci
fill(L + 1, C)
sfrit dac
dac L > 1 i AL-1,C ALC atunci
fill(L - 1, C)
sfrit dac
dac C < M i AL,C+1 ALC atunci
fill(L, C + 1)
sfrit dac
dac C > 1 i AL,C-1 ALC atunci
fill(L, C - 1)
sfrit dac
sfrit dac
sfrit subalgoritm

algoritm bila
// iniializarea matricei B
pentru I 1, N execut
pentru J 1, M execut
BIJ fals
sfrit pentru
sfrit pentru

Restricie:
1 N, M 100.
Exemplu:
N=4M=4
1
9
5
1

6
6
4
9

9 3
2 3
9 4
8 4

Rspuns corect:
2 3
3 2

// "umplerea" matricei B
pentru toate celulele (L, C) de pe marginea matricei B i nu BLC execut
fill(L, C)
sfrit pentru
// afiarea rezultatelor
pentru I 1, N execut
pentru J 1, M execut
dac nu BIJ atunci
scrie I, J
sfrit dac
sfrit pentru
sfrit pentru
sfrit algoritm

Operaiune militar
Pentru a evita atacurile teroritilor, forele armate implicate n conflictul din Kari au hotrt s se retrag n cazematele construite pe
terenul de lupt, codificat printr-o matrice binar cu N linii i M coloane, n care valoarea 1 reprezint un perete, iar valoarea 0
reprezint spaiu liber. Cazematele sunt zonele de pe teren care sunt n ntregime nconjurate de perei. Va trebui s scriei un program
care, pe baza configraiei terenului de lupt, determin:
- numrul cazematelor de pe terenul de lupt;
- numrul soldailor care se pot adposti n cazemate, considernd c fiecare soldat ocup, n caz de necesitate, o singur locaie din matrice, care
nu este perete i care se afl n interiorul cazematei;
- cunoscndu-se numrul K al detaamentelor i numrul soldailor din fiecare detaament, trebuie determinat, dac este posibil, o distribuie a
soldailor, astfel nct detaamentele s nu se scindeze;
- n cazul n care acest lucru nu este posibil, se va afia mesajul imposibil;
- dac exist o astfel de posibilitate, atunci, pentru fiecare detaament, se va afia un triplet de forma: numrul de ordine al detaamentului, linia
i coloana unei poziii libere din cazemat n care se vor distribui soldaii acelui detaament.
Exemplu:
Trebuie menionat faptul c n nici una dintre cazematele de pe cmpul de lupt nu pot intra
mai multe detaamente.
Datele de intrare se citesc din fiierul input.txt, astfel:
- pe prima linie se afl numerele N, M i K, separate prin cte un spaiu;
- pe urmtoarele N linii se afl matricea binar, cu elementele separate prin cte un spaiu;
- pe ultima linie se afl K numere separate prin cte un spaiu, corespunztoare numrului
de soldai din fiecare detaament.
Datele de ieire se vor afia n fi- ierul output.txt, pe trei
linii. Fie-care linie va corespunde uneia dintre cele trei cerine.

input.txt
4 5 3
0 0 0 0 0
0 1 1 0 0
1 0 0 1 0
0 1 1 1 0
2 3 1
output.txt
1
2
Imposibil

FOTO - http://campion.edu.ro/arhiva/index.php?page=problem&action=view&id=1574

Alina este pasionat de fotografiile alb-negru. Ea ales o imagine pe care a codificat-o binar ntr-o matrice de dimensiune nxm cu valori
0 corespunztoare pentru alb (pe care le-a numit puncte luminoase) i cu valori 1 corespunztoare pentru negru (pe care le-a numit
puncte ntunecate). Astfel, ea identific n imaginea codificat zone luminoase i zone ntunecate, o zon fiind o poriune a matricei
care conine elemente cu aceeai valoare, trecerea de la un element la altul al zonei fcndu-se doar prin deplasri pe orizontal sau pe
vertical.
Cerin: Ajutai-o pe Alina s gseasc cea mai luminoas zon i determinai numrul de puncte luminoase ale acesteia.
Date de intrare
Pe prima linie a fiierului text foto.in se gsesc dou numere naturale n i m care reprezint numrul liniilor, respectiv numrul
coloanelor matricei. Pe urmtoarele n linii se gsesc cte m valori binare, separate prin cte un spaiu, reprezentnd elementele
matricei care codific imaginea.
Date de ieire
Fiierul text foto.out trebuie s conin o singur linie pe care se va afla numrul punctelor din cea mai luminoas zon a imaginii.
Restricii
1 n 100, 1 m 100, numere naturale
Dac nu exist nicio zon luminoas, se va considera c cea mai luminoas zon are 0 elemente
Exemple
foto.in
66
100111
110101
100100
111011
100110
100111

foto.out
5

Explicaii
Zona cea mai luminoas este format din elementele: (1,2),(1,3),(2,3),(3,2),(3,3)

Vila
Un senator are o vila, reprezentata printr-o matrice ce contine numai caracterele "1" si "-" (minus), unde 1 reprezinta "zid", iar 0
"spatiu liber". Spre exemplu o vila modesta, cu doar 3 camere arata in felul urmator:
1111111111111
1-------1---1
1---111111111
1-------1---1
1111111111111
Cerin:
a) Cate camere are vila senatorului
b) Care este camera cu suprafata cea mai mare
c) Ce perete trebuie indepartat (prin perete se intelege un singur caracter de '1') astfel incat sa se obtina o cea mai mare camera.
(se cere o singura solutie).
Datele de intrare se citesc din fisierul "vila.in" ce are urmatorul format:
- pe prima linie se gasesc doua numere naturale n si m despartite printr-un spatiu (1<=n,m<=100), care reprezinta numarul de
linii (n), respectiv numarul de coloane (m) al matricii
- pe urmatoarele n linii se gasesc cate m caractere "1" sau "-"
Datele de iesire se scriu in fisierul "vila.out", in urmatorul format
- prima linie contine numarul de camere
- a doua linie contine aria camerei de suprafata maxima
- a treia linie contine coordonatele zidului eliminat si aria camerei de suprafata maxima rezultata
Exemplu:
vila.in
5 13
1111111111111
1-------1---1
1---1111-1111
1-------1---1
1111111111111
vila.in
4 12
111111111111
-----11---------11----111111111111

vila.out
4
17
4 9 22

vila.out
2
10
1 1 11

Observatie:
Camerele nu se invecineaza pe diagonala.

Observatie:
Vila se considera inconjurata de ziduri

ferma - OJI 2014 - Clasa a X-a - http://campion.edu.ro/arhiva/index.php?page=problem&action=view&id=1583


Un fermier deine o ferm de form dreptunghiular cu lungimea m metri i limea n
metri. Respectnd principiul rotaiei culturilor i-a realizat un plan pentru semnarea
culturilor n noul an. A desenat un dreptunghi pe care l-a mprit n m * n celule, fiecare
corespunznd unui metru ptrat i a colorat n culori diferite zonele care corespund la
culturi diferite. O cultur poate fi semnat pe mai multe parcele. Dou celule care au o
latur comun aparin aceleiai parcele dac au aceeai culoare (sunt nsmnate cu
aceeai cultur). Fermierul are posibilitatea s irige o parcel i dorete s aleag parcela cu
cea mai mare suprafa. Nefiind mulumit de suprafaa rezultat, s-a ntrebat dac ar putea
schimba cultura de pe o singur celul, astfel nct s obin o parcel de suprafa mai
mare.
Cerin

Imagine 1
r m m g g g a a
m v v g g g a a
m v v g v v v v
v v v r v v v v
v v r r r g g a
v v r r r g g g
a a a a a a a g

Dndu-se dimensiunile fermei i pentru fiecare celul culoarea corespunztoare culturii semnate, determinai:
Varianta 1: Suprafaa maxim a unei parcele n planul iniial.
Varianta 2: Numrul liniei, respectiv al coloanei celulei pe care va semna o alt cultur i culoarea corespunztoare noii culturi.
Date de intrare
Fiierul de intrare ferma.in va conine:

pe prima linie un numr natural v ( 1 v 2 ) indicnd variantei cerinei de rezolvare;

pe a doua linie dou numere naturale m i n separate printr-un spaiu, cu semnificaia din enun;

pe fiecare dintre urmtoarele m linii se gsesc cte n caractere (litere mici), reprezentnd codurile culturilor ce vor fi
semnate pe cele n celule corespunztoare fiecrei linii.

Date de ieire
Fiierul de ieire ferma.out va conine: Varianta 1
pentru v=1:
pe prima linie numrul natural s, reprezentnd suprafaa maxim a unei parcele;
Varianta 2 pentru v=2:
pe prima linie dou numere naturale separate printr-un spaiu, reprezentnd numrul liniei, respectiv al coloanei celulei pe
care va semna o alt cultur n vederea obinerii unei parcele cu suprafaa maxim;

pe a doua linie un caracter reprezentnd codul culorii corespunztoare noii culturi din celula determinat.

Restricii i precizri

2 m 400
2 n 400
Numrul de culturi distincte este cel puin 2 i cel mult 26.
30% din teste vor avea pe prima linie valoarea 1, iar restul de 70% din teste
vor avea pe prima linie valoarea 2.

Pentru varianta 2 se puncteaz orice soluie care conduce la obinerea unei


parcele cu suprafaa maxim. Nu se acord punctaje pariale.

Exemplu
ferma.in

1
78
rmmgggaa
mvvgggaa
mvvgvvvv
vvvrvvvv
vvrrrgga
vvrrrggg
aaaaaaag
2
78
rmmgggaa
mvvgggaa
mvvgvvvv
vvvrvvvv
vvrrrgga
vvrrrggg
aaaaaaag

ferma.out

11

Explicaii
Imagine 2
1

9 11

10 10 10 10 10 10 10

Datele corespund imaginilor de mai sus. Numerotarea parcelelor din imaginea


2 este utilizat pentru a simplifica explicaiile de mai jos i nu influeneaz
datele problemei i nici algoritmul de rezolvare.
n varianta 1 se determin i afieaz suprafaa maxim a unei parcele, care
este egal cu 11 i corespunde parcelei 6, de culoare verde.

34
v

Pentru varianta 2:
Schimbnd n verde culoarea celulei din linia3, coloana 4 se obine o parcel
cu suprafaa 11+8+1=20.

Timp maxim de executare/test: 0,2 secunde.


Memorie total disponibil: 32 MB, din care 10 MB pentru stiv.
Dimensiune maxim a sursei: 10 KB.

Dreptunghiuri - ONI 2010 Clasa a X-a- http://campion.edu.ro/arhiva/index.php?page=problem&action=view&id=1102


Se consider o matrice cu elemente 0 sau 1, cu L linii (numerotate de la 1 la L) i C coloane (numerotate de la 1 la C).
Definim o zon dreptunghiular ca fiind o submatrice ce are pe contur numai valori 1 i cu proprietatea c nu exist valori de 1
nesituate pe contur i n acelai timp la distana 1 fa de un punct de pe contur. Dou puncte sunt la distana 1 dac i numai dac
sunt vecine pe una dintre cele 8 direcii.
Interiorul unei zone dreptunghiulare const din elementele din submatrice nesituate pe contur.
O zon dreptunghiular poate fi inclus complet n interiorul alteia. Definim ordinul unei zone dreptunghiulare ca fiind valoarea d
+1, unde d este numrul de zone n interiorul crora aceasta este inclus.
Orice element 1 din matrice se afl pe conturul unei singure zone dreptunghiulare.
Fig. 1-4 conin exemple de zone dreptunghiulare. n fig. 5 este o matrice n care se gsesc trei zone dreptunghiulare, dintre care
zonele din interior au ordinul 2 iar cealalt ordinul 1.
11111
10001
11111

111

1111
1111

1111111110
1000000010
1011101010
1010101010
1011101010
1000000010
1111111110
fig. 5

fig. 1
fig. 2
fig. 3
fig. 4
Cerin
S se determine numrul total de zone dreptunghiulare din matrice, ordinul maxim al unei zone i numrul de zone care au acest
ordin maxim.
Date de intrare
Fiierul de intrare dreptunghiuri.in conine pe prima linie numerele naturale L i C separate printr-un spaiu. Pe fiecare din
urmtoarele L linii din fiier se afl cte C numere din mulimea {0,1}, separate prin cte un spaiu, reprezentnd valorile din
matrice.
Date de ieire
Fiierul de ieire dreptunghiuri.out conine pe prima linie trei numere naturale D, O i NR, separate prin cte un spaiu, unde D
este numrul total de zone dreptunghiulare din matrice, O este ordinul maxim al unui astfel de zone, iar NR este numrul de zone
de ordin maxim.
Restricii i precizri

3 L, C 1 000
Datele de intrare sunt corecte. Va exista cel puin o zon dreptunghiular n matrice.
Pentru determinarea corect a numrului de zone se acord 20% din punctajul pe fiecare test.
Exemplu
dreptunghiuri.in
dreptunghiuri.out
Explicaii
9
12
431
Sunt n total 4 zone dreptunghiulare, ordinul maxim al uneia
011111111111
dintre ele este 3 (cea format dintr-un singur 1) i este o singur
astfel de zon.
010000000001
010111110001
010100010101
010101010101
010100010101
010111110101
010000000001
011111111111
Timp maxim de execuie/test: 0.6 secunde (Linux) ; 0.8 secunde (Windows)
Memorie total disponibil: 16 MB, din care 1 MB pentru stiv

Insule - OJI2009 - http://campion.edu.ro/arhiva/index.php?page=problem&action=view&id=135


Arhipelagul RGB este format din insule care aparin rilor R, G i B. Putem reprezenta harta arhipelagului ca o matrice cu
n linii i m coloane cu elemente din mulimea {0, 1, 2, 3}. Un element egal cu 0 reprezint o zon acoperit de ap; un
element egal cu 1 reprezint o zon de pmnt aparinnd unei insule din ara R, iar un element egal cu2 reprezint o zon
de pmnt aparinnd unei insule din ara G, iar un element egal cu
3 reprezint o zon de pmnt aparinnd unei insule
din ara B.
Se consider c dou elemente ale matricei sunt vecine dac ele au aceeai valoare i fie sunt consecutive pe linie, fie sunt
consecutive pe coloan. Dou elemente aparin aceleiai insule dac ele sunt vecine sau dac se poate ajunge de la un
element la cellalt pe un drum de-a lungul cruia oricare dou elemente consecutive sunt vecine.
Pentru a ncuraja relaiile de colaborare dintre rile R i G, se dorete construirea unui pod care s uneasc o insul
aparinnd rii R de o insul aparinnd rii G. Podul trebuie s respecte urmtoarele condiii:

s nceap pe o zon cu ap consecutiv pe linie sau coloan cu o zon aparinnd rii R;


s se termine pe o zon cu ap consecutiv pe linie sau coloan cu o zon aparinnd rii G;
s traverseze numai zone acoperite cu ap;
oricare dou elemente consecutive ale podului trebuie s fie vecine;
lungimea podului s fie minim (lungimea podului este egal cu numrul de elemente traversate de pod).
Cerin
Dat fiind harta arhipelagului s se determine cte insule aparin fiecrei ri, precum i lungimea minim a unui pod care
s satisfac condiiile din enunt.
Date de intrare
Fiierul de intrare insule.in conine pe prima linie numerele naturale n i m, separate prin spaiu. Pe urmtoarele n linii
este descris harta arhipelagului. Pe fiecare dintre aceste n linii sunt scrise cte m valori din mulimea {0, 1, 2, 3}; valorile
nu sunt separate prin spaii.
Date de ieire
Fiierul de ieire insule.out va conine o singur linie pe care vor fi scrise patru numere naturale separate prin spaii
NR NG NB Lg, unde NR reprezint numrul de insule aparinnd rii R, NG numrul de insule aparinnd rii G, NB
numrul de insule aparinnd rii B, iar Lg lungimea minim a podului.
Restricii i precizri
1 < n, m 100
Se garanteaz c pe hart exist cel puin un element 1, un element 2 i un element 0.
Se acord 40% din punctaj pentru determinarea corect a numrului de insule din fiecare ar; se acord punctaj integral
pentru rezolvarea corect a tuturor cerinelor.
nceputul i sfritul podului pot s coincid.
Pentru datele de test exist ntotdeauna soluie.
Exemplu
insule.in

insule.out

Explicaie

6 7
1000320
0110313
3333000
2033000
2203011
2000010

4 2 3 4

ara R are 4 insule, ara G are 2 insule, iar ara B are 3 insule.
Lungimea minim a unui pod care poate fi construit este 4; de
exemplu, podul traverseaz celulele (6,5), (6,4), (6,3), (6,2).

Timp maxim de execuie/test: 1 secund

Zona - OJI 2013 - http://campion.edu.ro/arhiva/index.php?page=problem&action=view&id=1505


Ionu pleac n drumeie ntr-o poriune de teren de form ptratic cu latura de N metri. O hart a zonei are trasat un caroiaj
care mparte zona n N*N ptrate unitate, cu latura de 1 metru. Astfel harta zonei are aspectul unui tablou ptratic cu N linii i
N coloane. Liniile i coloanele sunt numerotate de la 1 la N. Elementele tabloului bidimensional corespund ptratelor unitate.
Zona poate fi parcurs strbtnd oricare dintre laturile ptratelor unitate cel mult o singur dat.
Ionu pleac din punctul aflat ncolul din dreapta jos al ptratului unitate din linia X
,
coloana Y i se deplaseaz fcnd un pas (parcurgnd o latur a unui ptrat unitate) n una din
direciile Nord, Est, Sud, Vest. Pentru a reine mai uor traseul folosete urmtoarea codificare
pentru cele 4 direcii: 1 pentru deplasarea spre Nord, 2 pentru
deplasarea spre Est, 3 pentru deplasarea spre Sud, respectiv 4 pentru deplasarea spre Vest.
Ajuns ntr-alt punct (col de ptrat unitate), Ionu continu s se deplaseze fr a trece de mai multe ori pe aceeai latur a unui
ptrat unitate.
Ionu se oprete n momentul n care ajunge ntr-un punct prin care a mai trecut. Traseul strbtut ntre cele dou treceri prin
acelai punct delimiteaz o zon de teren format din ptrate unitate.
Cerin
Dndu-se linia X i coloana Y corespunztoare poziiei de plecare a lui Ionu, dimensiunea zonei N, lungimeatraseului L i
traseul determinai:
a) Numrul de pai parcuri ntre prima i a doua trecere prin punctul de oprire.
b) Numrul de ptrate unitate interioare zonei delimitat de traseul strbtut ntre cele dou treceri prin acelai punct.
Date de intrare
Pe prima linie a fiierului zona.in se afl valorile X, Y, N i L desprite prin cte un spaiu, reprezentnd coordonatele
punctului de plecare, dimensiunea terenului i lungimea traseului parcurs. Pe urmtoarea linie se afl L valori din mulimea {1,
2, 3, 4} desprite prin cte un spaiu, reprezentnd codificarea ntregului traseu.
Date de ieire
Fiierul zona.out va conine dou linii, pe prima linie un numr natural reprezentnd rspunsul la cerina a), iar pe linia a
doua, un numr natural reprezentnd rspunsul la cerina b).
Restricii i precizri:
0 < N < 51,
0 < X, Y < N, 0 < L < 2501.
- Se garanteaz faptul c traseul trece de dou ori prin acelai punct i nu parcurge de dou ori aceeai latur.
- Pentru determinarea corect a numrului de la punctul a) se acord 20% din punctaj.
- Pentru determinarea corect a numrului de la punctul b) se acord 80% din punctaj.
- n situaia n care nu ai reuit s rezolvai cerina a), dar avei un rspuns pentru b), vei scrie rspunsul pentru cerina b)
pe linia 2 i nu pe prima linie!
Exemplu
zona.in
zona.out
2 3 7 18
16
2 3 3 3 4 3 4 1 1 1 1 1 2 2 2 3 3 4 11

Limit de timp: 0.1 secunde/test


Limit de memorie: 64 MB, din care 32 MB pentru stiv
Dimensiunea maxim a sursei: 30 KB

explicaie
Dup cei 18 pai
de la plecare
ajunge n
punctul situat
n colul din
dreapta jos al
ptratului
unitate de
coordonate
parcuri delimiteaz
11 Ultimii
(3,4).
ptrate unitate. 16 pai

Tsunami - ONI 2011 - http://campion.edu.ro/arhiva/index.php?page=problem&action=view&id=1267


Tsunamiul este valul mareic ce se propag prin apa oceanelor/mrilor, ca urmare a producerii unor erupii subacvatice sau/i a unor
cutremure submarine sau de coast foarte puternice.
Cercettorii doresc s prentmpine efectele unor posibile valuri mareice prin marcarea i clasificarea zonelor al cror risc de
inundare este ridicat.
Teritoriul studiat a fost mprit n nm ptrate identice (zone) rezultnd o hart digitizat, reprezentat sub forma unui tablou
bidimensional cu n linii i m coloane, fiecare element al tabloului memornd cota (nlimea) terenului din ptratul unitate
corespunztor. Zonele de ap au cota 0, iar zonele de uscat au cote mai mari dect 0.
Orice tsunami este clasificat n funcie de nlimea valului mareic, pe o scar de la 1 la 10. Cercettorii doresc s marcheze zonele
de risc ce pot fi afectate de un potenial tsunami.
Iniial, valul mareic apare n toate zonele de cot 0 vecine cu cel puin o zon de uscat. O zon teritorial poate fi afectat dac are
cota strict mai mic dect nlimea valului mareic i se afl n vecintatea apei sau n vecintatea unei zone afectate. Dou ptrate
unitate se nvecineaz dac au o latur comun.

Cerin
Dat fiind harta digitizat a zonelor monitorizate, s se determine numrul zonelor de uscat afectate de un tsunami de nlime h.

Date de intrare
Fiierul de intrare tsunami.in conine pe prima linie trei numere naturale n,m i h separate prin cte un spaiu, reprezentnd
dimensiunile hrii, respectiv nlimea valului mareic. Pe urmtoarele n linii sunt scrise cte m numere naturale separate prin cte
un spaiu reprezentnd, n ordine, cotele din cele nm ptrate teritoriale unitate ale hrii.
Date de ieire
Fiierul de ieire tsunami.out conine o singur valoare ce reprezint numrul ptratelor unitate afectate de un tsunami de
nlime h.
Restricii i precizri

2 n,m 1000
1 h 10
Zona monitorizat nu conine lacuri interioare (ptrate unitate nvecinate, avnd cota 0, nconjurate complet de
ptrate unitate avnd cote strict mai mari dect 0)
Cotele sunt numere naturale 1000

Exemple
tsunami.in
6 7 3
0 0 4 2 5
1 0 0 7 3
2 3 0 5 2
0 7 5 4 0
0 5 2 3 0
0 4 4 8 0

0
6
2
0
2
2

0
0
0
0
0
0

tsunami.out
6

Timp maxim de execuie/test: 1 secund.


Memorie total disponibil: 16 MB
Dimensiune maxim a sursei: 5 KB

Explicaii
Zonele inundate sunt reprezentate ngroat n tabloul bidimensional:
0 0 4 2 5 0 0
1 0 0 7 3 6 0
2 3 0 5 2 2 0
0 7 5 4 0 0 0
0 5 2 3 0 2 0
0 4 4 8 0 2 0

S-ar putea să vă placă și