#1204
Gara de Nord este cea mai vestită gară din lume. Japonezii, invidioşi pe sistemul performant de întârziere al trenurilor din Gara de Nord, s-au hotărât să analizeze motivul realizării unei astfel de performanțe.
În Gara de Nord (considerată stația 0) există N trenuri. Pentru fiecare tren i știm că va pleca din Gara noastră protagonistă (stația 0) și o să meargă până la stația statie[i]. Staţiile x şi x+1 sunt legate în mod direct pentru orice x, astfel că trenul i va opri în toate stațiile din intervalul [0, statie[i]]. De asemenea, știm că trenul i are o capacitate egală cu numărul maxim de oameni pe care îl poate transporta. Această capacitate este notată cu capacitate[i].
Avem M pasageri dornici sa folosească magnificul traseu. Pentru fiecare pasager i știm intervalul de stații [a[i], b[i]] pe care vrea să îl parcurgă. Mai exact, acesta vrea să se urce într-un tren în stația a[i] și să coboare în stația b[i].
Din cauza capacității limitate a trenurilor, este posibil ca nu toți pasagerii sa poată obțină un loc și să ajungă în destinația dorită. Să se determine numărul maxim de pasageri care pot ajunge din stația de plecare în stația de sosire, precum și o configurație în care aceștia se pot urca în trenuri.
ONI 2015, Clasele XI-XII
| Problema | Trenuri | Operații I/O |
trenuri.in/trenuri.out
|
|---|---|---|---|
| Limita timp | 1.5 secunde | Limita memorie |
Total: 64 MB
/
Stivă 16 MB
|
| Id soluție | #61403172 | Utilizator | |
| Fișier | trenuri.cpp | Dimensiune | 1.47 KB |
| Data încărcării | 26 Noiembrie 2025, 18:16 | Scor/rezultat | Eroare de compilare |
trenuri.cpp: In function 'int main()': trenuri.cpp:37:25: error: converting to 'std::multiset<std::tuple<int, int, int> >::value_type {aka std::tuple<int, int, int>}' from initializer list would use explicit constructor 'constexpr std::tuple< <template-parameter-1-1> >::tuple(_UElements&& ...) [with _UElements = {int&, int&, int&}; <template-parameter-2-2> = void; _Elements = {int, int, int}]' s.insert({x,y,i}); ^ trenuri.cpp:45:44: error: converting to 'const key_type {aka const std::tuple<int, int, int>}' from initializer list would use explicit constructor 'constexpr std::tuple< <template-parameter-1-1> >::tuple(_UElements&& ...) [with _UElements = {int&, int, int}; <template-parameter-2-2> = void; _Elements = {int, int, int}]' auto it=s.lower_bound({v[i].dr,0,0}); ^ trenuri.cpp:47:14: error: expected unqualified-id before '[' token auto [poz,cap,id]=*it; ^ trenuri.cpp:49:20: error: 'id' was not declared in this scope a[v[i].id]=id; ^ trenuri.cpp:50:13: error: 'cap' was not declared in this scope if (cap>=2) s.insert({poz,cap-1,id}); ^ trenuri.cpp:50:31: error: 'poz' was not declared in this scope if (cap>=2) s.insert({poz,cap-1,id}); ^ trenuri.cpp:50:44: error: no matching function for call to 'std::multiset<std::tuple<int, int, int> >::insert(<brace-enclosed initializer list>)' if (cap>=2) s.insert({poz,cap-1,id}); ^ trenuri.cpp:50:44: note: candidates are: In file included from /usr/include/c++/4.8/set:62:0, from /usr/include/i386-linux-gnu/c++/4.8/bits/stdc++.h:86, from trenuri.cpp:1: /usr/include/c++/4.8/bits/stl_multiset.h:454:7: note: std::multiset<_Key, _Compare, _Alloc>::iterator std::multiset<_Key, _Compare, _Alloc>::insert(const value_type&) [with _Key = std::tuple<int, int, int>; _Compare = std::less<std::tuple<int, int, int> >; _Alloc = std::allocator<std::tuple<int, int, int> >; std::multiset<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree_const_iterator<std::tuple<int, int, int> >; std::multiset<_Key, _Compare, _Alloc>::value_type = std::tuple<int, int, int>] insert(const value_type& __x) ^ /usr/include/c++/4.8/bits/stl_multiset.h:454:7: note: no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type& {aka const std::tuple<int, int, int>&}' /usr/include/c++/4.8/bits/stl_multiset.h:459:7: note: std::multiset<_Key, _Compare, _Alloc>::iterator std::multiset<_Key, _Compare, _Alloc>::insert(std::multiset<_Key, _Compare, _Alloc>::value_type&&) [with _Key = std::tuple<int, int, int>; _Compare = std::less<std::tuple<int, int, int> >; _Alloc = std::allocator<std::tuple<int, int, int> >; std::multiset<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree_const_iterator<std::tuple<int, int, int> >; std::multiset<_Key, _Compare, _Alloc>::value_type = std::tuple<int, int, int>] insert(value_type&& __x) ^ /usr/include/c++/4.8/bits/stl_multiset.h:459:7: note: no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::multiset<std::tuple<int, int, int> >::value_type&& {aka std::tuple<int, int, int>&&}' /usr/include/c++/4.8/bits/stl_multiset.h:484:7: note: std::multiset<_Key, _Compare, _Alloc>::iterator std::multiset<_Key, _Compare, _Alloc>::insert(std::multiset<_Key, _Compare, _Alloc>::const_iterator, const value_type&) [with _Key = std::tuple<int, int, int>; _Compare = std::less<std::tuple<int, int, int> >; _Alloc = std::allocator<std::tuple<int, int, int> >; std::multiset<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree_const_iterator<std::tuple<int, int, int> >; std::multiset<_Key, _Compare, _Alloc>::const_iterator = std::_Rb_tree_const_iterator<std::tuple<int, int, int> >; std::multiset<_Key, _Compare, _Alloc>::value_type = std::tuple<int, int, int>] insert(const_iterator __position, const value_type& __x) ^ /usr/include/c++/4.8/bits/stl_multiset.h:484:7: note: candidate expects 2 arguments, 1 provided /usr/include/c++/4.8/bits/stl_multiset.h:489:7: note: std::multiset<_Key, _Compare, _Alloc>::iterator std::multiset<_Key, _Compare, _Alloc>::insert(std::multiset<_Key, _Compare, _Alloc>::const_iterator, std::multiset<_Key, _Compare, _Alloc>::value_type&&) [with _Key = std::tuple<int, int, int>; _Compare = std::less<std::tuple<int, int, int> >; _Alloc = std::allocator<std::tuple<int, int, int> >; std::multiset<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree_const_iterator<std::tuple<int, int, int> >; std::multiset<_Key, _Compare, _Alloc>::const_iterator = std::_Rb_tree_const_iterator<std::tuple<int, int, int> >; std::multiset<_Key, _Compare, _Alloc>::value_type = std::tuple<int, int, int>] insert(const_iterator __position, value_type&& __x) ^ /usr/include/c++/4.8/bits/stl_multiset.h:489:7: note: candidate expects 2 arguments, 1 provided /usr/include/c++/4.8/bits/stl_multiset.h:503:9: note: template<class _InputIterator> void std::multiset<_Key, _Compare, _Alloc>::insert(_InputIterator, _InputIterator) [with _InputIterator = _InputIterator; _Key = std::tuple<int, int, int>; _Compare = std::less<std::tuple<int, int, int> >; _Alloc = std::allocator<std::tuple<int, int, int> >] insert(_InputIterator __first, _InputIterator __last) ^ /usr/include/c++/4.8/bits/stl_multiset.h:503:9: note: template argument deduction/substitution failed: trenuri.cpp:50:44: note: candidate expects 2 arguments, 1 provided if (cap>=2) s.insert({poz,cap-1,id}); ^ In file included from /usr/include/c++/4.8/set:62:0, from /usr/include/i386-linux-gnu/c++/4.8/bits/stdc++.h:86, from trenuri.cpp:1: /usr/include/c++/4.8/bits/stl_multiset.h:515:7: note: void std::multiset<_Key, _Compare, _Alloc>::insert(std::initializer_list<_Tp>) [with _Key = std::tuple<int, int, int>; _Compare = std::less<std::tuple<int, int, int> >; _Alloc = std::allocator<std::tuple<int, int, int> >] insert(initializer_list<value_type> __l) ^ /usr/include/c++/4.8/bits/stl_multiset.h:515:7: note: no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::initializer_list<std::tuple<int, int, int> >' trenuri.cpp:51:32: error: no matching function for call to 'std::multiset<std::tuple<int, int, int> >::insert(<brace-enclosed initializer list>)' s.insert({v[i].st,1,id}); ^ trenuri.cpp:51:32: note: candidates are: In file included from /usr/include/c++/4.8/set:62:0, from /usr/include/i386-linux-gnu/c++/4.8/bits/stdc++.h:86, from trenuri.cpp:1: /usr/include/c++/4.8/bits/stl_multiset.h:454:7: note: std::multiset<_Key, _Compare, _Alloc>::iterator std::multiset<_Key, _Compare, _Alloc>::insert(const value_type&) [with _Key = std::tuple<int, int, int>; _Compare = std::less<std::tuple<int, int, int> >; _Alloc = std::allocator<std::tuple<int, int, int> >; std::multiset<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree_const_iterator<std::tuple<int, int, int> >; std::multiset<_Key, _Compare, _Alloc>::value_type = std::tuple<int, int, int>] insert(const value_type& __x) ^ /usr/include/c++/4.8/bits/stl_multiset.h:454:7: note: no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type& {aka const std::tuple<int, int, int>&}' /usr/include/c++/4.8/bits/stl_multiset.h:459:7: note: std::multiset<_Key, _Compare, _Alloc>::iterator std::multiset<_Key, _Compare, _Alloc>::insert(std::multiset<_Key, _Compare, _Alloc>::value_type&&) [with _Key = std::tuple<int, int, int>; _Compare = std::less<std::tuple<int, int, int> >; _Alloc = std::allocator<std::tuple<int, int, int> >; std::multiset<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree_const_iterator<std::tuple<int, int, int> >; std::multiset<_Key, _Compare, _Alloc>::value_type = std::tuple<int, int, int>] insert(value_type&& __x) ^ /usr/include/c++/4.8/bits/stl_multiset.h:459:7: note: no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::multiset<std::tuple<int, int, int> >::value_type&& {aka std::tuple<int, int, int>&&}' /usr/include/c++/4.8/bits/stl_multiset.h:484:7: note: std::multiset<_Key, _Compare, _Alloc>::iterator std::multiset<_Key, _Compare, _Alloc>::insert(std::multiset<_Key, _Compare, _Alloc>::const_iterator, const value_type&) [with _Key = std::tuple<int, int, int>; _Compare = std::less<std::tuple<int, int, int> >; _Alloc = std::allocator<std::tuple<int, int, int> >; std::multiset<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree_const_iterator<std::tuple<int, int, int> >; std::multiset<_Key, _Compare, _Alloc>::const_iterator = std::_Rb_tree_const_iterator<std::tuple<int, int, int> >; std::multiset<_Key, _Compare, _Alloc>::value_type = std::tuple<int, int, int>] insert(const_iterator __position, const value_type& __x) ^ /usr/include/c++/4.8/bits/stl_multiset.h:484:7: note: candidate expects 2 arguments, 1 provided /usr/include/c++/4.8/bits/stl_multiset.h:489:7: note: std::multiset<_Key, _Compare, _Alloc>::iterator std::multiset<_Key, _Compare, _Alloc>::insert(std::multiset<_Key, _Compare, _Alloc>::const_iterator, std::multiset<_Key, _Compare, _Alloc>::value_type&&) [with _Key = std::tuple<int, int, int>; _Compare = std::less<std::tuple<int, int, int> >; _Alloc = std::allocator<std::tuple<int, int, int> >; std::multiset<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree_const_iterator<std::tuple<int, int, int> >; std::multiset<_Key, _Compare, _Alloc>::const_iterator = std::_Rb_tree_const_iterator<std::tuple<int, int, int> >; std::multiset<_Key, _Compare, _Alloc>::value_type = std::tuple<int, int, int>] insert(const_iterator __position, value_type&& __x) ^ /usr/include/c++/4.8/bits/stl_multiset.h:489:7: note: candidate expects 2 arguments, 1 provided /usr/include/c++/4.8/bits/stl_multiset.h:503:9: note: template<class _InputIterator> void std::multiset<_Key, _Compare, _Alloc>::insert(_InputIterator, _InputIterator) [with _InputIterator = _InputIterator; _Key = std::tuple<int, int, int>; _Compare = std::less<std::tuple<int, int, int> >; _Alloc = std::allocator<std::tuple<int, int, int> >] insert(_InputIterator __first, _InputIterator __last) ^ /usr/include/c++/4.8/bits/stl_multiset.h:503:9: note: template argument deduction/substitution failed: trenuri.cpp:51:32: note: candidate expects 2 arguments, 1 provided s.insert({v[i].st,1,id}); ^ In file included from /usr/include/c++/4.8/set:62:0, from /usr/include/i386-linux-gnu/c++/4.8/bits/stdc++.h:86, from trenuri.cpp:1: /usr/include/c++/4.8/bits/stl_multiset.h:515:7: note: void std::multiset<_Key, _Compare, _Alloc>::insert(std::initializer_list<_Tp>) [with _Key = std::tuple<int, int, int>; _Compare = std::less<std::tuple<int, int, int> >; _Alloc = std::allocator<std::tuple<int, int, int> >] insert(initializer_list<value_type> __l) ^ /usr/include/c++/4.8/bits/stl_multiset.h:515:7: note: no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::initializer_list<std::tuple<int, int, int> >'
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Trenuri 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ă.