.campion
conectare | înregistrare | căutare
Pagina principală » Probleme » lacuri

ultima problemă
grupă: mică
sursă: OMI 2016
ultimul articol
autor: Prof. Radu Vişinescu
ultimul software
autor: Prof. Emanuela Cerchez
lacuri


Timp maxim de execuţie / test:
0.1s
Memorie totala disponibilă / stivă:
3MB / 1MB

Pe un teren de formă pătrată sunt zone de uscat şi lacuri. Harta terenului este memorată într-un tablou bidimensional n*n cu valori 1 (apă) sau 0 (uscat). Liniile sunt numerotate de la 1 la n, de sus în jos şi coloanele de la 1 la n, de la stânga la dreapta. Fiecare lac este înconjurat de o suprafaţă de teren uscat. Excepţie fac doar lacurile situate la marginea terenului care sunt înconjurate de uscat doar prin interiorul terenului nu şi prin afara acestuia.

Cerinţă

Se doreşte să se traverseze terenul pe uscat, de la poziţia (1,1) la poziţia (n,n), pe un drum de lungime minimă, mergând pas cu pas. La un pas, se ajunge de la un pătrăţel la altul învecinat cu el spre nord, est, sud sau vest.
Să se scrie un program care:
a) Determină numărul lacurilor care sunt de formă pătrată şi în acelaşi timp sunt „pline de 1”.
b) În cazul în care toate lacurile sunt de formă pătrată şi în acelaşi timp „pline de 1”, determinaţi un drum cu proprietatea de mai sus.

Date de intrare

Fişierul de intrare lacuri.in are pe prima linie numărul n, iar pe următoarele n linii este descrisă harta terenului (fiecare linie are n valori 0 sau 1, separate de câte un spaţiu).

Date de ieşire

Fişierul de ieşire lacuri.out va conţine:
- pe prima linie: numărul de lacuri ce sunt de formă pătrată şi în acelaşi timp „pline de 1”;
- în cazul în care toate lacurile sunt de formă pătrată şi în acelaşi timp „pline de 1”, urmează liniile ce descriu drumul de lungime minimă ales. Fiecare linie din fişier conţine câte o pereche de coordonate ale poziţiilor succesive prin care trece drumul (linia şi coloana, separate cu un spaţiu), începând cu (1,1) şi terminând cu (n,n).

Restricţii

2 ≤ n ≤ 100
• Poziţiile (1,1) şi (n,n) sunt sigur libere (cu valoarea 0).
• Dacă există mai multe soluţii se va afişa oricare dintre ele.
• Pot fi cel mult 100 de lacuri şi cel puţin unul; dacă un lac este de formă pătrată, atunci 1 ≤ latura ≤ n-1.
• Indiferent de forma lor, lacurile sunt sigur „izolate”, adică nu se „ating” deloc de alt lac. De exemplu, dacă un lac conţine poziţia (3,3), atunci un alt lac nu poate conţine vreuna din poziţiile învecinate cu (3,3), adică: (2,3), (2,4), (3,4), (4,4), (4,3), (4,2), (3,2) şi (2,2).
• Pentru cerinţa a) se acordă 30% din punctaj, iar pentru cerinţa b) se acordă 70% din punctaj.

Exemple

lacuri.inlacuri.outExplicaţii
6 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 1 1 0 0 1 0 4 1 1 1 2 1 3 2 3 3 3 4 3 5 3 5 4 5 5 5 6 6 6 a) Prima linie conţine 4 (sunt 4 lacuri de formă pătrată şi „pline de 1”)
b) Deoarece toate cele 4 lacuri sunt de formă pătrată şi „pline de 1”, se scrie şi drumul ales: de la (1,1), (1,2), (1,3), (2,3), (3,3), ...., (6,6).
Observaţii
1) Dacă în poziţia (3,5) ar fi fost un 0, atunci lacul cu latura 3 nu ar mai fi fost „plin de 1” şi atunci prima linie ar fi conţinut doar valoarea 3 (ar fi fost doar 3 lacuri pătrate şi „pline de 1”).
2) În exemplul iniţial, dacă în poziţia (6,1) ar fi fost valorea 0, atunci nu ar fi fost toate lacurile pătrate (cel din stânga-jos nu ar fi fost pătrat) şi s-ar fi afişat doar un 3 în fişierul de ieşire.
3) În exemplul iniţial, dacă în poziţia (5,2) ar fi fost valoarea 0, atunci s-ar fi afişat doar un 3, pentru că lacul din stânga-jos nu ar fi un lac pătrat şi „plin de 1”.


autor: Prof. Dan Grigoriu
propunător: Prof. Marinel Şerban
Liceul de Informatică “Grigore Moisil”
marinel_serban@yahoo.com
Articole recomandate
Probleme recomandate
De la ONI 2007: ceas, numere4, cifru, oua, turn, div3, jeton, politic, trecere, agitatie, secv, sotron, triunghi, apel, castel, excursia, matricea, randuri, zidar, desc, felinar, joc6, log, maxq, tric, cover, dist, munte1, promo, puncte1, role
De acelaşi autor: robinson, romeo, sir4, gardul, gaina, cub3
Despre recursivitate: tren, mere, chimie, sarpe, soldati, formule, infinit, compress, ploaia, cartoane, sub, metro, windows, apel, maxq, pav, joc11, paianjen, suma2, monkey, csir, lsort, imagine, dir, desert, echitabil, rez, logic, gradina, links, dreptunghiuri, expresie1, cumpanit, reziston, antitero, sablon3
Despre matrice: vopsea, harta, opmat, sarpe, light, magic2, tetris, origami, concurs, iepuras, tribile, criptmat, cutie, patrate, 3d, pajura, perspic, vecini2, livada, matrice3, kafka, erdos, grup, scor2, reteta2, rezervatie, scoici, tablou, game, stea, submatrix, cifru, jokes, oua, trecere, na, dotnet, renju, ghici, mere1, agitatie, sotron, desen1, camion, ceas1, fibo, parc, excursia, matricea, zidar, joc6, log, concurs2, cladiri, dist, centru, robinson, cuburi2, joc8, joc9, romeo, adevar, soricel2, avere, joc11, vizibil, sah1, blockout, masina3, lsort, anticip, matrice1, evantai, spion, pereti, zumzi, roboti, placare, tabel, ocr, numere7, lacusta, becuri, sir5, flori, cartele, furnica, pavare, poarta, rj, peri, poligon2, sablon1, gradina, matrice4, poartas, balcon, submdisj, v, matrx, figura, neuroni, raze, roboti1, bila, iepurasi, colorare, mat, submatrix1, simetric1, plaja, xor2, guess, albine1, joct, alfabetar, stele, tablou1, alpinist, cladire, cri, grupe2, el, mahjong, sir9, acces, tort1, joc17, mesaj3, zar1, xy, poteci, avioane, broscute, safeu, acoperire1, radioactiv, robot4, lcdr, jb, slide, maxtri, dame, triunghi4, elicop, compresie, mijloc, cubulete, romb, 2ndesc, medalion, bile6, zigzag, puncte5, intersectii, matd3, matrixdel, speed, seif1, traseu2, incadrare, betasah, zona, latin, zmax, amestec, sudoku1, gradina1, spider, zone, bemo, rombul, interclasare, rebus1, tabla, arrows, pseudobil, patrat1, rascoala, harta2, relatii, lasere, defrag, matcnt, ssdj, cript, ssk, teren1, fence, cifre6
Despre vector: trei, simetric, egal, ruleta, pod, uscat, afise, an, bunici, cursa, onu, tramvai, cadou, kpal, expresie, piticot, roci, petrol, grad, ruleta2, ecran, palma, concurs, holo, ab2, tren2, cifre, mgo, firma, anagrame, joc2, br, maxim, astre, numere2, baby, zapada, hd, startrek, vecini2, drept, teatru, tir, patrate2, nr, cifra, repeat, unu, criptare, ratb, placi, sume3, turist, matrice3, pavaj, sume, kafka, bacan, spair, grup, friends2, bitslang, fisc, scor2, cat, nr3, chimie2, zid, politics, submat, reteta2, rezervatie, creioane, felinare, 2numere, exp, scoici, patrate1, playlist, sqr, carte, oua, turn, ants, div3, jeton, politic, trecere, maraton, zaruri, suma1, mere1, agitatie, secv, sotron, triunghi, carti1, spioni, kalah, excursia, matricea, maxq, oras, furnici, baschet, ingerasi, numar1, prieteni, aritma, cezar, bifo, pal, seceta, bare, soricel1, antena, avere, paianjen, bloc, schi, suma3, fractie, tunel, pepsi, prefix, tren3, avion, premii1, csir, top, bsir, secvente, cod4, cuburi3, limbaj, panouri, sant1, zumzi, sport1, baschet1, mere3, powerpuff, placare, sir4, volei1, tabel, ocr, numere7, lacusta, flori, pluton, elfi, mare, grupe1, maroco, cartonas, cabina, case, cod5, furnica, numere8, paritate, comoara1, exponent, control, exp1, joc13, popas, reactivi, siruri1, vanatoare, submult, text1, taxe1, visul, paranteze, puncte3, cub3, numere9, panglica, pietre, poartas, sume2, bal, secvsir, vot, prefix1, accesibil, palc, standard, bursa, meteo, jetoane, printesa, palindrom, joker, matriosca, loto, cuvant, cladiri1, secvente1, zar, tren4, asociativ, lego, medalii, figura, joc14, neuroni, char, dartz, turism1, calorii, xor1, paltrei, album, livada1, colorare, greutati, brazi, submatrix1, plaja, cd1, cifru3, permutare, miere, tetris1, conferinta, atelier, radical, bileprime, nx, atletism, sumb, minmax, sumacifre, jocprim, sircifre, cmmdcsecv, secvb, siruri3, cifru4, vase, carte1, grad1, litere, magic6, macheta, butoane, ec, stalpi2, fagure, goe, papusa, taburet, mesaj3, zar1, joc16, talent, joc18, cos, punctfix, risipa, liste, triburi, nr0, oneton, nor, nrpomi, paisprezece, anagramabil, zuma, joc20, dale, perechi2, consiliu, becuri2, codpatrat, adprod, qtri, reconst, arme, triunghi4, deal, ozn1, cifru5, flori1, elicop, roata, trifoi, maxbin, culori2, numar5, bile6, proiecte, alune, cuburi4, sstabil, intersectii, copaci2, 7segmente, amedie, drept2, divider, eliminare, matd3, prodnr, fraze, vectori1, compar, unific, galbeni, clepsidru, calcule, puncte6, maxp, cursa1, secvp, swap, extraprime, onigim, divizori1, remi1, tetris3, amestec, eoliene, split, momente, secvente2, ausoara, aranjare2, vintage, binremove, sminus, subsets, interclasare, palindromuri, colina, doitrei, rebus1, tcif, munte3, triunghi6, schi1, rascoala, solitar, praslea, vot2, tema, sprime, sir2dif, aperm, unudoi, prajituri, tan, concurs4, ech, arc, dominant, ordine, tv1, nebuni, sort2dist, lightbot, iepuras1, castig
Despre fill: rebus, sarpe, insule, zuzu, joc11, gradina, dreptunghiuri, drenaj, fillmat, parcela, acces, tsunami, betasah, zona, zone, taxa, foto, ferma1, antitero, robotzi
Despre Lee: inginer, insule, lbd, ocean14, iepuras2, sah, radio, castel, excursia, soricel2, masina2, paianjen, suma2, soricel3, cub2, alee, rj, taxe1, sotron1, tom, ny, ai, robot3, pixy, valet, oras1, maxtri, lgdrum, gheizere, abq, cartite, joc21, traseu3, wow, panda
surse trimise | ajutor