#1998
NASA plănuiește o nouă misiune Rover pe Marte în anul 2020. Principalul obiectiv al acestei misiuni este de a determina, cu ajutorul unui nou Rover, dacă a existat în trecut viață pe Marte. Până când va fi lansată misiunea, Roverul este supus la tot felul de teste în laboratoarele NASA. Într-unul din teste, Roverul trebuie să parcurgă o suprafață de forma unui caroiaj cu N linii și N coloane. Acesta pornește din zona de coordonate (1,1) și trebuie să ajungă în zona de coordonate (N,N), la fiecare pas putându-se deplasa din zona în care se află într-una din zonele învecinate la nord, sud, est sau vest. Pentru fiecare zonă de coordonate (i,j) se cunoaște A[i,j], stabilitatea terenului din acea zonă. Știind că Roverul are o greutate G, o zonă cu stabilitatea terenului cel puțin egală cu G se consideră o zonă sigură pentru deplasarea Roverului, iar o zonă cu stabilitatea terenului mai mică decât G se consideră o zonă periculoasă pentru Rover.
1. Determinați numărul minim posibil de zone periculoase pe care le traversează Roverul pentru a ajunge din zona (1,1) în zona (N,N).
2. Determinați greutatea maximă pe care o poate avea un Rover care să ajungă din zona (1,1) în zona (N,N), fără a traversa nicio zonă periculoasă pentru el.
OJI 2017, Clasa a X-a
| Problema | Rover | Operații I/O |
rover.in/rover.out
|
|---|---|---|---|
| Limita timp | 0.5 secunde | Limita memorie |
Total: 64 MB
/
Stivă 32 MB
|
| Id soluție | #58665800 | Utilizator | |
| Fișier | rover.cpp | Dimensiune | 2.72 KB |
| Data încărcării | 12 Iulie 2025, 17:49 | Scor/rezultat | Eroare de compilare |
rover.cpp: In function 'int bfs_min_dangerous(int)': rover.cpp:29:14: error: expected unqualified-id before '[' token auto [x, y] = dq.front(); ^ rover.cpp:33:22: error: 'x' was not declared in this scope int nx = x + dx[d], ny = y + dy[d]; ^ rover.cpp:34:31: error: 'ny' was not declared in this scope if (in_bounds(nx, ny)) { ^ rover.cpp:36:44: error: 'y' was not declared in this scope if (cost[nx][ny] > cost[x][y] + danger) { ^ rover.cpp:39:47: error: no matching function for call to 'std::deque<std::pair<int, int> >::push_front(<brace-enclosed initializer list>)' dq.push_front({nx, ny}); ^ rover.cpp:39:47: note: candidates are: In file included from /usr/include/c++/4.8/deque:64:0, from rover.cpp:2: /usr/include/c++/4.8/bits/stl_deque.h:1359:7: note: void std::deque<_Tp, _Alloc>::push_front(const value_type&) [with _Tp = std::pair<int, int>; _Alloc = std::allocator<std::pair<int, int> >; std::deque<_Tp, _Alloc>::value_type = std::pair<int, int>] push_front(const value_type& __x) ^ /usr/include/c++/4.8/bits/stl_deque.h:1359:7: note: no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type& {aka const std::pair<int, int>&}' /usr/include/c++/4.8/bits/stl_deque.h:1372:7: note: void std::deque<_Tp, _Alloc>::push_front(std::deque<_Tp, _Alloc>::value_type&&) [with _Tp = std::pair<int, int>; _Alloc = std::allocator<std::pair<int, int> >; std::deque<_Tp, _Alloc>::value_type = std::pair<int, int>] push_front(value_type&& __x) ^ /usr/include/c++/4.8/bits/stl_deque.h:1372:7: note: no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::deque<std::pair<int, int> >::value_type&& {aka std::pair<int, int>&&}' rover.cpp:41:46: error: no matching function for call to 'std::deque<std::pair<int, int> >::push_back(<brace-enclosed initializer list>)' dq.push_back({nx, ny}); ^ rover.cpp:41:46: note: candidates are: In file included from /usr/include/c++/4.8/deque:64:0, from rover.cpp:2: /usr/include/c++/4.8/bits/stl_deque.h:1390:7: note: void std::deque<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = std::pair<int, int>; _Alloc = std::allocator<std::pair<int, int> >; std::deque<_Tp, _Alloc>::value_type = std::pair<int, int>] push_back(const value_type& __x) ^ /usr/include/c++/4.8/bits/stl_deque.h:1390:7: note: no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type& {aka const std::pair<int, int>&}' /usr/include/c++/4.8/bits/stl_deque.h:1404:7: note: void std::deque<_Tp, _Alloc>::push_back(std::deque<_Tp, _Alloc>::value_type&&) [with _Tp = std::pair<int, int>; _Alloc = std::allocator<std::pair<int, int> >; std::deque<_Tp, _Alloc>::value_type = std::pair<int, int>] push_back(value_type&& __x) ^ /usr/include/c++/4.8/bits/stl_deque.h:1404:7: note: no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::deque<std::pair<int, int> >::value_type&& {aka std::pair<int, int>&&}' rover.cpp: In function 'bool bfs_check(int)': rover.cpp:62:14: error: expected unqualified-id before '[' token auto [x, y] = q.front(); ^ rover.cpp:65:22: error: 'x' was not declared in this scope int nx = x + dx[d], ny = y + dy[d]; ^ rover.cpp:66:31: error: 'ny' was not declared in this scope if (in_bounds(nx, ny) && !viz[nx][ny] && A[nx][ny] >= limit) { ^ rover.cpp:68:32: error: no matching function for call to 'std::queue<std::pair<int, int> >::push(<brace-enclosed initializer list>)' q.push({nx, ny}); ^ rover.cpp:68:32: note: candidates are: In file included from /usr/include/c++/4.8/queue:64:0, from rover.cpp:3: /usr/include/c++/4.8/bits/stl_queue.h:212:7: note: void std::queue<_Tp, _Sequence>::push(const value_type&) [with _Tp = std::pair<int, int>; _Sequence = std::deque<std::pair<int, int> >; std::queue<_Tp, _Sequence>::value_type = std::pair<int, int>] push(const value_type& __x) ^ /usr/include/c++/4.8/bits/stl_queue.h:212:7: note: no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type& {aka const std::pair<int, int>&}' /usr/include/c++/4.8/bits/stl_queue.h:217:7: note: void std::queue<_Tp, _Sequence>::push(std::queue<_Tp, _Sequence>::value_type&&) [with _Tp = std::pair<int, int>; _Sequence = std::deque<std::pair<int, int> >; std::queue<_Tp, _Sequence>::value_type = std::pair<int, int>] push(value_type&& __x) ^ /usr/include/c++/4.8/bits/stl_queue.h:217:7: note: no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::queue<std::pair<int, int> >::value_type&& {aka std::pair<int, int>&&}'
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Rover 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ă.