#1028
Ferma
Un fermier deține o fermă de formă dreptunghiulară cu lungimea m
metri și lățimea n
metri. Respectând principiul rotației culturilor, fermierul și a realizat un plan pentru semănarea culturilor în noul an. Astfel ,el a desenat un dreptunghi pe care l-a împărțit în m * n
celule, fiecare corespunzând unui metru pătrat, și a colorat în culori diferite zonele care corespund unor culturi diferite. O cultură poate fi semănată pe mai multe parcele. Două celule care au o latură comună aparțin aceleiași parcele dacă au aceeași culoare (sunt însămânțate cu aceeași cultură). Fermierul are posibilitatea să irige o sigură parcelă și dorește să aleagă parcela cu cea mai mare suprafață. Nefiind mulțumit de suprafața rezultată, s-a întrebat dacă ar putea schimba cultura de pe o singură celulă, astfel încât să obțină o parcelă de suprafață mai mare.
Dându-se dimensiunile fermei și pentru fiecare celulă culoarea corespunzătoare culturii semănate, determinați:
OJI 2014, Clasa a X-a
Problema | Ferma | Operații I/O |
![]() ferma.in /ferma.out
|
---|---|---|---|
Limita timp | 0.2 secunde | Limita memorie |
Total: 32 MB
/
Stivă 10 MB
|
Id soluție | #34533150 | Utilizator | |
Fișier | ferma.cpp | Dimensiune | 4.94 KB |
Data încărcării | 04 Februarie 2022, 23:47 | Scor / rezultat | Eroare de compilare |
ferma.cpp:13:11: error: invalid use of template-name 'std::array' without an argument list constexpr std::array dx{ 1, 0, -1, 0 }; ^ ferma.cpp:14:11: error: invalid use of template-name 'std::array' without an argument list constexpr std::array dy{ 0, 1, 0, -1 }; ^ ferma.cpp: In static member function 'static bool Area::notInRange(ptrdiff_t, ptrdiff_t)': ferma.cpp:43:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] return i < 0 || i >= n || j < 0 || j >= m; ^ ferma.cpp:43:49: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] return i < 0 || i >= n || j < 0 || j >= m; ^ ferma.cpp: In member function 'size_t Area::fill(size_t, size_t)': ferma.cpp:81:37: error: 'dx' was not declared in this scope for (size_t l = 0; l != dx.size(); ++ l) { ^ ferma.cpp:83:36: error: 'dy' was not declared in this scope ptrdiff_t jj = j + dy[l]; ^ ferma.cpp: In function 'int main()': ferma.cpp:170:22: error: missing template arguments before 'checked' std::set checked ({ parcels.id(i, j) }); ^ ferma.cpp:170:22: error: expected ';' before 'checked' ferma.cpp:170:51: error: expected primary-expression before ')' token std::set checked ({ parcels.id(i, j) }); ^ ferma.cpp:170:51: error: expected ';' before ')' token ferma.cpp:172:37: error: 'dx' was not declared in this scope for (size_t k = 0; k != dx.size(); ++ k) { ^ ferma.cpp:174:36: error: 'dy' was not declared in this scope ptrdiff_t jj = j + dy[k]; ^ ferma.cpp:176:51: error: 'checked' was not declared in this scope if (parcels.notInRange(ii, jj) || checked.count(parcels.id(ii, jj)) != 0) ^ ferma.cpp:180:17: error: 'checked' was not declared in this scope checked.emplace(parcels.id(ii, jj)); ^
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Ferma 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ă.