제출 #147921

#제출 시각아이디문제언어결과실행 시간메모리
147921nekiWiring (IOI17_wiring)C++14
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> #include "wiring.h" #define maxn 100100 #define loop(i, a, b) for(int i=a;i<b;i++) typedef long long ll; using namespace std; bool cmp(ll a, ll b) { return (abs(a)<abs(b))? 1:0;} ll min(ll a, ll b) { return (a<b)? a:b;} long long min_total_length (vector <int> red, vector <int> blue) { pair<ll, ll> com[maxn*2];ll n=red.size()+blue.size(); loop(i, 0, red.size()) com[i]=make_pair(red[i], 1); loop(i, 0, blue.size()) com[i+red.size()]=make_pair(blue[i], -1); sort(com, com+n, cmp);sort(red.begin(), red.end());sort(blue.begin(), blue.end()); ll dp[maxn*2], nek[maxn*2], ind[maxn*2], bal=maxn, dif=0;loop(i, 0, 2*maxn) nek[i]=LLONG_MAX; loop(i, 0, n){ ll ma=LLONG_MAX; bal+=com[i].second;dif+=com[i].first * com[i].second; if(com[i].second==1){ auto cl=lower_bound(blue.begin(), blue.end(), com[i].first); if(cl!=blue.end()) ma=min(ma, (*cl)-com[i].first); if(cl!=blue.begin()) ma=min(ma, com[i].first-(*prev(cl))); } else{ auto cl=lower_bound(red.begin(), red.end(), com[i].first); if(cl!=red.end()) ma=min(ma, (*cl)-com[i].first); if(cl!=red.begin()) ma=min(ma, com[i].first-(*prev(cl))); } dp[i]=min(dp[i-1]+ma, abs(dif-nek[bal])+dp[ind[bal]]); nek[bal]=dif;ind[bal]=i; } return dp[n-1]; }

컴파일 시 표준 에러 (stderr) 메시지

wiring.cpp: In function 'long long int min_total_length(std::vector<int>, std::vector<int>)':
wiring.cpp:4:36: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
 #define loop(i, a, b) for(int i=a;i<b;i++)
wiring.cpp:14:8:
   loop(i, 0, red.size()) com[i]=make_pair(red[i], 1);
        ~~~~~~~~~~~~~~~~             
wiring.cpp:14:3: note: in expansion of macro 'loop'
   loop(i, 0, red.size()) com[i]=make_pair(red[i], 1);
   ^~~~
wiring.cpp:4:36: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
 #define loop(i, a, b) for(int i=a;i<b;i++)
wiring.cpp:15:8:
   loop(i, 0, blue.size()) com[i+red.size()]=make_pair(blue[i], -1);
        ~~~~~~~~~~~~~~~~~            
wiring.cpp:15:3: note: in expansion of macro 'loop'
   loop(i, 0, blue.size()) com[i+red.size()]=make_pair(blue[i], -1);
   ^~~~
In file included from /usr/include/c++/7/bits/stl_algobase.h:71:0,
                 from /usr/include/c++/7/bits/char_traits.h:39,
                 from /usr/include/c++/7/ios:40,
                 from /usr/include/c++/7/istream:38,
                 from /usr/include/c++/7/sstream:38,
                 from /usr/include/c++/7/complex:45,
                 from /usr/include/c++/7/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52,
                 from wiring.cpp:1:
/usr/include/c++/7/bits/predefined_ops.h: In instantiation of 'constexpr bool __gnu_cxx::__ops::_Iter_comp_iter<_Compare>::operator()(_Iterator1, _Iterator2) [with _Iterator1 = std::pair<long long int, long long int>*; _Iterator2 = std::pair<long long int, long long int>*; _Compare = bool (*)(long long int, long long int)]':
/usr/include/c++/7/bits/stl_algo.h:81:17:   required from 'void std::__move_median_to_first(_Iterator, _Iterator, _Iterator, _Iterator, _Compare) [with _Iterator = std::pair<long long int, long long int>*; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(long long int, long long int)>]'
/usr/include/c++/7/bits/stl_algo.h:1921:34:   required from '_RandomAccessIterator std::__unguarded_partition_pivot(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = std::pair<long long int, long long int>*; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(long long int, long long int)>]'
/usr/include/c++/7/bits/stl_algo.h:1953:38:   required from 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = std::pair<long long int, long long int>*; _Size = long int; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(long long int, long long int)>]'
/usr/include/c++/7/bits/stl_algo.h:1968:25:   required from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = std::pair<long long int, long long int>*; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(long long int, long long int)>]'
/usr/include/c++/7/bits/stl_algo.h:4868:18:   required from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = std::pair<long long int, long long int>*; _Compare = bool (*)(long long int, long long int)]'
wiring.cpp:16:23:   required from here
/usr/include/c++/7/bits/predefined_ops.h:143:18: error: cannot convert 'std::pair<long long int, long long int>' to 'long long int' in argument passing
         { return bool(_M_comp(*__it1, *__it2)); }
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/7/bits/predefined_ops.h: In instantiation of 'bool __gnu_cxx::__ops::_Val_comp_iter<_Compare>::operator()(_Value&, _Iterator) [with _Value = std::pair<long long int, long long int>; _Iterator = std::pair<long long int, long long int>*; _Compare = bool (*)(long long int, long long int)]':
/usr/include/c++/7/bits/stl_algo.h:1828:20:   required from 'void std::__unguarded_linear_insert(_RandomAccessIterator, _Compare) [with _RandomAccessIterator = std::pair<long long int, long long int>*; _Compare = __gnu_cxx::__ops::_Val_comp_iter<bool (*)(long long int, long long int)>]'
/usr/include/c++/7/bits/stl_algo.h:1855:36:   required from 'void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = std::pair<long long int, long long int>*; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(long long int, long long int)>]'
/usr/include/c++/7/bits/stl_algo.h:1885:25:   required from 'void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = std::pair<long long int, long long int>*; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(long long int, long long int)>]'
/usr/include/c++/7/bits/stl_algo.h:1971:31:   required from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = std::pair<long long int, long long int>*; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(long long int, long long int)>]'
/usr/include/c++/7/bits/stl_algo.h:4868:18:   required from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = std::pair<long long int, long long int>*; _Compare = bool (*)(long long int, long long int)]'
wiring.cpp:16:23:   required from here
/usr/include/c++/7/bits/predefined_ops.h:215:11: error: cannot convert 'std::pair<long long int, long long int>' to 'long long int' in argument passing
  { return bool(_M_comp(__val, *__it)); }
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/7/bits/predefined_ops.h: In instantiation of 'bool __gnu_cxx::__ops::_Iter_comp_val<_Compare>::operator()(_Iterator, _Value&) [with _Iterator = std::pair<long long int, long long int>*; _Value = std::pair<long long int, long long int>; _Compare = bool (*)(long long int, long long int)]':
/usr/include/c++/7/bits/stl_heap.h:133:48:   required from 'void std::__push_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare&) [with _RandomAccessIterator = std::pair<long long int, long long int>*; _Distance = long int; _Tp = std::pair<long long int, long long int>; _Compare = __gnu_cxx::__ops::_Iter_comp_val<bool (*)(long long int, long long int)>]'
/usr/include/c++/7/bits/stl_heap.h:237:23:   required from 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = std::pair<long long int, long long int>*; _Distance = long int; _Tp = std::pair<long long int, long long int>; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(long long int, long long int)>]'
/usr/include/c++/7/bits/stl_heap.h:342:22:   required from 'void std::__make_heap(_RandomAccessIterator, _RandomAccessIterator, _Compare&) [with _RandomAccessIterator = std::pair<long long int, long long int>*; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(long long int, long long int)>]'
/usr/include/c++/7/bits/stl_algo.h:1672:23:   required from 'void std::__heap_select(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = std::pair<long long int, long long int>*; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(long long int, long long int)>]'
/usr/include/c++/7/bits/stl_algo.h:1933:25:   required from 'void std::__partial_sort(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = std::pair<long long int, long long int>*; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(long long int, long long int)>]'
/usr/include/c++/7/bits/stl_algo.h:1948:27:   required from 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = std::pair<long long int, long long int>*; _Size = long int; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(long long int, long long int)>]'
/usr/include/c++/7/bits/stl_algo.h:1968:25:   required from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = std::pair<long long int, long long int>*; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(long long int, long long int)>]'
/usr/include/c++/7/bits/stl_algo.h:4868:18:   required from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = std::pair<long long int, long long int>*; _Compare = bool (*)(long long int, long long int)]'
wiring.cpp:16:23:   required from here
/usr/include/c++/7/bits/predefined_ops.h:177:11: error: cannot convert 'std::pair<long long int, long long int>' to 'long long int' in argument passing
  { return bool(_M_comp(*__it, __val)); }
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~