#2436
castel1
Arheologii au descoperit pe un platou muntos greu accesibil ruinele unui castel medieval, pe care l-au fotografiat din elicopter, obţinând harta digitizată a acestuia. Harta este memorată sub forma unui tablou bidimensional H
, compus din N x N
pătrate cu latura egală cu unitatea, având ca elemente numere naturale între 0
și 15
, care codifică forma pereţilor fiecărui pătrat unitar. Dacă scriem numărul natural H[i][j]
în baza 2
, folosind exact 4
cifre binare, fiecare bit dă informații despre unul dintre pereții posibil de construit pe fiecare latură a pătratului unitar din poziția (i,j)
, astfel:
0
are valoarea 1
, atunci există perete pe latura vestică (latura din stânga);1
are valoarea 1
, atunci există perete pe latura sudică (latura de jos);2
are valoarea 1
, atunci există perete pe latura estică (latura din dreapta);3
are valoarea 1
, atunci există perete pe latura nordică (latura de sus);0
indică lipsa peretelui corespunzător acestuia;Pentru un număr scris în baza 2
, numerotarea cifrelor începe cu poziția 0
, de la dreapta la stânga.
Castelul este interesant deoarece, pentru realizarea unei mai bune apărări, camerele ce-l compun sunt construite fie independent, fie una în interiorul alteia. Orice camera este construită la o distanţă de cel puţin o unitate faţă de zidul ce împrejmuieşte castelul sau faţă de pereţii altor camere.
Folosind harta, arheologii doresc să afle informaţii privind numărul camerelor şi camera de arie maximă. Prin arie a unei camere se înţelege numărul pătratelor unitate cuprinse în interiorul pereților aceasteia, fără a socoti ariile camerelor construite în interiorul ei.
Cunoscând codificarea hărţii castelului, să se determine:
1. numărul total al camerelor din castel
2. aria maximă a unei camere
3. coordonatele colţurilor din stânga-sus, respectiv dreapta-jos a camerei cu aria maximă. Dacă există mai multe camere având aceeaşi arie maximă, atunci se vor afişa coordonatele camerei având colţul din stânga-sus (lin1, col1)
cu lin1
minimă, iar la linii egale pe aceea cu col1
minimă.
Problema | castel1 | Operații I/O |
![]() castel1.in /castel1.out
|
---|---|---|---|
Limita timp | 0.2 secunde | Limita memorie |
Total: 64 MB
/
Stivă 32 MB
|
Id soluție | #28906461 | Utilizator | |
Fișier | castel1.cpp | Dimensiune | 5.37 KB |
Data încărcării | 23 Martie 2021, 11:54 | Scor / rezultat | Eroare de compilare |
castel1.cpp:108:19: error: redefinition of 'short int A [102][102]' short A[Nmax][Nmax], Viz[Nmax][Nmax]; ^ castel1.cpp:31:7: error: 'short int A [102][102]' previously declared here short A[Nmax][Nmax], Viz[Nmax][Nmax]; ^ castel1.cpp:108:36: error: redefinition of 'short int Viz [102][102]' short A[Nmax][Nmax], Viz[Nmax][Nmax]; ^ castel1.cpp:31:22: error: 'short int Viz [102][102]' previously declared here short A[Nmax][Nmax], Viz[Nmax][Nmax]; ^ castel1.cpp:109:7: error: redefinition of 'short int N' short N; ^ castel1.cpp:32:7: error: 'short int N' previously declared here short N; ^ castel1.cpp:110:7: error: redefinition of 'short int C' short C; ^ castel1.cpp:33:7: error: 'short int C' previously declared here short C; ^ castel1.cpp: In function 'short int ValBit(short int, short int)': castel1.cpp:112:7: error: redefinition of 'short int ValBit(short int, short int)' short ValBit(short No, short Pos) ^ castel1.cpp:35:7: error: 'short int ValBit(short int, short int)' previously defined here short ValBit(short No, short Pos) ^ castel1.cpp: In function 'void Fill(short int, short int, short int&, short int&, short int&)': castel1.cpp:117:6: error: redefinition of 'void Fill(short int, short int, short int&, short int&, short int&)' void Fill(short lin, short col, short &Aria, short &elin, short &ecol) ^ castel1.cpp:40:6: error: 'void Fill(short int, short int, short int&, short int&, short int&)' previously defined here void Fill(short lin, short col, short &Aria, short &elin, short &ecol) ^ castel1.cpp: In function 'int main()': castel1.cpp:142:5: error: redefinition of 'int main()' int main() ^ castel1.cpp:65:5: error: 'int main()' previously defined here int main() ^ castel1.cpp: In function 'int main()': castel1.cpp:67:38: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen("castel1.in", "r", stdin); ^ castel1.cpp:68:40: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen("castel1.out", "w", stdout); ^ castel1.cpp: In function 'int main()': castel1.cpp:144:38: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen("CASTEL.inp", "r", stdin); ^ castel1.cpp:145:39: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen("CASTEL.out", "w", stdout); ^
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema castel1 face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.