#1097
O suprafaţă dreptunghiulară de înălţime N
şi lăţime M
unităţi trebuie acoperită perfect (placată) prin utilizarea unor plăci de formă dreptunghiulară de dimensiune 1 x P
sau P x 1
, unde P
este un număr natural nenul. Suprafaţa dată poate fi privită ca un caroiaj cu NxM
pătrăţele egale cu unitatea.
O placare corectă a suprafeţei iniţiale se memorează într-un fişier text folosind următoarele convenţii de codificare:
N
şi M
ale suprafeţei;P
este codificată prin numărul natural P
, iar o placă de înalţime P
se codifică prin numărul întreg –P
;1
;N
linii ale codificării se află câte un şir de valori întregi reprezentând, în ordine de la stânga la dreapta, codurile plăcilor care se găsesc amplasate începând de la respectiva linie;P
strict mai mare ca 1
al unei placi orizontale apare o singură dată pe linia corespunzătoare pe care se află placa, iar codul –P
al unei placi verticale va apare o singură dată şi anume pe prima linie de la care placa respectivă este amplasată în jos pe o anumita coloană a suprafeţei;0
.Folosind codificarea unei placări a suprafeţei iniţiale, se poate determina imaginea acestei placări sub forma unui tablou bidimensional A
, cu N
linii şi M
coloane, unde A
ij
= valoarea absolută a codului plăcii care se suprapune peste pătrăţelul de pe linia i
şi coloana j
.
Cunoscând codificarea unei placări corecte a suprafeţei date să se obţină imaginea acestei placări (matricea de valori corespunzătoare codificării suprafeţei).
OJI 2009, Clasa a IX-a
Problema | Placare | Operații I/O |
![]() placare.in /placare.out
|
---|---|---|---|
Limita timp | 0.1 secunde | Limita memorie |
Total: 64 MB
/
Stivă 8 MB
|
Id soluție | #10108135 | Utilizator | |
Fișier | placare.cpp | Dimensiune | 1.50 KB |
Data încărcării | 06 August 2018, 12:46 | Scor / rezultat | Eroare de compilare |
placare.cpp: In function 'int main()': placare.cpp:34:23: error: call of overloaded 'abs(int&)' is ambiguous debug += abs(p); ^ placare.cpp:34:23: note: candidates are: In file included from /usr/include/c++/4.8/cstdlib:72:0, from /usr/include/c++/4.8/ext/string_conversions.h:41, from /usr/include/c++/4.8/bits/basic_string.h:2815, from /usr/include/c++/4.8/string:52, from /usr/include/c++/4.8/bits/locale_classes.h:40, from /usr/include/c++/4.8/bits/ios_base.h:41, from /usr/include/c++/4.8/ios:42, from /usr/include/c++/4.8/ostream:38, from /usr/include/c++/4.8/iostream:39, from placare.cpp:1: /usr/include/stdlib.h:775:12: note: int abs(int) extern int abs (int __x) __THROW __attribute__ ((__const__)) __wur; ^ placare.cpp:17:12: note: int abs(const int&) inline int abs(const int &p){ ^ In file included from /usr/include/c++/4.8/ext/string_conversions.h:41:0, from /usr/include/c++/4.8/bits/basic_string.h:2815, from /usr/include/c++/4.8/string:52, from /usr/include/c++/4.8/bits/locale_classes.h:40, from /usr/include/c++/4.8/bits/ios_base.h:41, from /usr/include/c++/4.8/ios:42, from /usr/include/c++/4.8/ostream:38, from /usr/include/c++/4.8/iostream:39, from placare.cpp:1: /usr/include/c++/4.8/cstdlib:174:3: note: long long int std::abs(long long int) abs(long long __x) { return __builtin_llabs (__x); } ^ /usr/include/c++/4.8/cstdlib:166:3: note: long int std::abs(long int) abs(long __i) { return __builtin_labs(__i); } ^ placare.cpp:29:10: warning: unused variable 'ok' [-Wunused-variable] bool ok = true; ^ placare.cpp:24:37: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] fscanf(f, "%d %d%c", &n, &m, &c); ^ placare.cpp:33:34: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] fscanf(f, "%d%c", &p, &c); ^
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Placare 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ă.