#2977
Sindbad a descoperit un recipient care conține o poțiune magică și o inscripție care descrie cum se poate deschide poarta unui templu. Urmând instrucțiunile din inscripție, Sindbad a ajuns la un tunel acoperit cu dale pătrate, aliniate astfel încât formează linii și coloane. Tunelul are mai multe linii, iar pe fiecare linie sunt câte N dale. Dalele din tunel sunt numerotate începând cu 1, astfel încât, parcurgându-le linie cu linie și fiecare linie de la stânga la dreapta, se obține un șir strict crescător de numere naturale consecutive.
Sindbad se află la intrare, înaintea primei linii. Pentru a deschide poarta templului, el trebuie să ajungă pe dala numerotată cu P, călcând pe un număr minim de dale. Dacă există mai multe astfel de soluții, o va alege pe cea pentru care consumul total de picături de poțiune magică este minim.
Scrieți un program care citește valorile N și P și rezolvă următoarele cerințe:
1. afișează numărul minim de dale pe care trebuie să calce pentru a deschide poarta;
2. afișează numărul natural T, reprezentând numărul minim de picături de poțiune magică necesare pentru deschiderea porții.
OJI 2019
| Problema | poarta1 | Operații I/O |
poarta.in/poarta.out
|
|---|---|---|---|
| Limita timp | 0.1 secunde | Limita memorie |
Total: 8 MB
/
Stivă 4 MB
|
| Id soluție | #63303179 | Utilizator | |
| Fișier | poarta1.cpp | Dimensiune | 2.26 KB |
| Data încărcării | 25 Februarie 2026, 14:32 | Scor/rezultat | Eroare de compilare |
poarta1.cpp: In function 'int main()': poarta1.cpp:32:18: error: expected unqualified-id before '[' token auto [x, pasi] = q.front(); q.pop(); ^ poarta1.cpp:33:17: error: 'x' was not declared in this scope if (x == P) { ^ poarta1.cpp:34:25: error: 'pasi' was not declared in this scope fout << pasi << "\n"; ^ poarta1.cpp:37:17: error: 'x' was not declared in this scope if (x + 1 <= P && !vis.count(x + 1)) { ^ poarta1.cpp:39:32: error: 'pasi' was not declared in this scope q.push({x + 1, pasi + 1}); ^ poarta1.cpp:39:41: error: no matching function for call to 'std::queue<std::pair<long long unsigned int, long long unsigned int> >::push(<brace-enclosed initializer list>)' q.push({x + 1, pasi + 1}); ^ poarta1.cpp:39:41: note: candidates are: In file included from /usr/include/c++/4.8/queue:64:0, from /usr/include/i386-linux-gnu/c++/4.8/bits/stdc++.h:85, from poarta1.cpp:1: /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<long long unsigned int, long long unsigned int>; _Sequence = std::deque<std::pair<long long unsigned int, long long unsigned int>, std::allocator<std::pair<long long unsigned int, long long unsigned int> > >; std::queue<_Tp, _Sequence>::value_type = std::pair<long long unsigned int, long long unsigned 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<long long unsigned int, long long unsigned 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<long long unsigned int, long long unsigned int>; _Sequence = std::deque<std::pair<long long unsigned int, long long unsigned int>, std::allocator<std::pair<long long unsigned int, long long unsigned int> > >; std::queue<_Tp, _Sequence>::value_type = std::pair<long long unsigned int, long long unsigned 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<long long unsigned int, long long unsigned int> >::value_type&& {aka std::pair<long long unsigned int, long long unsigned int>&&}' poarta1.cpp:41:21: error: 'x' was not declared in this scope if (2 * x <= P && !vis.count(2 * x)) { ^ poarta1.cpp:43:32: error: 'pasi' was not declared in this scope q.push({2 * x, pasi + 1}); ^ poarta1.cpp:43:41: error: no matching function for call to 'std::queue<std::pair<long long unsigned int, long long unsigned int> >::push(<brace-enclosed initializer list>)' q.push({2 * x, pasi + 1}); ^ poarta1.cpp:43:41: note: candidates are: In file included from /usr/include/c++/4.8/queue:64:0, from /usr/include/i386-linux-gnu/c++/4.8/bits/stdc++.h:85, from poarta1.cpp:1: /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<long long unsigned int, long long unsigned int>; _Sequence = std::deque<std::pair<long long unsigned int, long long unsigned int>, std::allocator<std::pair<long long unsigned int, long long unsigned int> > >; std::queue<_Tp, _Sequence>::value_type = std::pair<long long unsigned int, long long unsigned 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<long long unsigned int, long long unsigned 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<long long unsigned int, long long unsigned int>; _Sequence = std::deque<std::pair<long long unsigned int, long long unsigned int>, std::allocator<std::pair<long long unsigned int, long long unsigned int> > >; std::queue<_Tp, _Sequence>::value_type = std::pair<long long unsigned int, long long unsigned 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<long long unsigned int, long long unsigned int> >::value_type&& {aka std::pair<long long unsigned int, long long unsigned int>&&}'
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema poarta1 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ă.