제출 #106651

#제출 시각아이디문제언어결과실행 시간메모리
106651popovicirobertPalembang Bridges (APIO15_bridge)C++14
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> #define lsb(x) (x & (-x)) #define ll long long #define ull unsigned long long // 217 // 44 using namespace std; const ll INF = 1e18; inline void solve(vector < pair <int, int> > &arr, vector <ll> &sol) { int sz = arr.size(); sol.resize(sz); multiset <int> mst1, mst2; ll sum1 = 0, sum2 = 0; for(int i = 0; i < sz; i++) { mst2.insert(arr[i].first); sum2 += arr[i].first; mst2.insert(arr[i].second); sum2 += arr[i].second; while(mst1.size() < i + 1) { mst1.insert(*mst2.begin()); sum1 += *mst2.begin(); sum2 -= *mst2.begin(); mst2.erase(mst2.begin()); } int cur = *prev(mst1.end()); sol[i] = 1LL * mst1.size() * cur - sum1 + sum2 - 1LL * mst2.size() * cur; } } int main() { //ifstream cin("A.in"); //ofstream cout("A.out"); int i, n, k; ios::sync_with_stdio(false); cin.tie(0), cout.tie(0); cin >> k >> n; vector < pair <int, int> > arr; ll ans = 0; for(i = 1; i <= n; i++) { char a, b; int x, y; cin >> a >> x >> b >> y; if(x > y) { swap(x, y); } if(a != b) { arr.push_back({x, y}); } else { ans += y - x; } } sort(arr.begin(), arr.end(), [&](const pair <int, int> &a, const pair <int, int> &b) { return a.first + a.second < b.first + b.second; }); if(k == 1) { vector <int> vals; ll tot = 0; for(auto it : arr) { vals.push_back(it.first); vals.push_back(it.second); tot += it.first + it.second; } sort(vals.begin(), vals.end()); ll mn = INF, sum = 0; for(i = 0; i < vals.size(); i++) { sum += vals[i]; mn = min(mn, 1LL * vals[i] * (i + 1) - sum + (tot - sum) - 1LL * vals[i] * (vals.size() - i - 1)); } cout << ans + mn + arr.size(); return 0; } vector <ll> sol_l, sol_r; solve(arr, sol_l); reverse(arr.begin(), arr.end()); solve(arr, sol_r); int sz = arr.size(); ll mn = min(sol_l[sz - 1], sol_r[sz - 1]); for(int i = 0; i < sz - 1; i++) { mn = min(mn, sol_l[i] + sol_r[sz - i - 2]); } cout << ans + mn + arr.size(); //cin.close(); //cout.close(); return 0; }

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

bridge.cpp: In function 'void solve(std::vector<std::pair<int, int> >&, std::vector<long long int>&)':
bridge.cpp:24:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         while(mst1.size() < i + 1) {
               ~~~~~~~~~~~~^~~~~~~
bridge.cpp: In function 'int main()':
bridge.cpp:79:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(i = 0; i < vals.size(); i++) {
                    ~~^~~~~~~~~~~~~
bridge.cpp:81:109: error: no matching function for call to 'min(long long int&, long long unsigned int)'
             mn = min(mn, 1LL * vals[i] * (i + 1) - sum + (tot - sum) - 1LL * vals[i] * (vals.size() - i - 1));
                                                                                                             ^
In file included from /usr/include/c++/7/bits/char_traits.h:39:0,
                 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 bridge.cpp:1:
/usr/include/c++/7/bits/stl_algobase.h:195:5: note: candidate: template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)
     min(const _Tp& __a, const _Tp& __b)
     ^~~
/usr/include/c++/7/bits/stl_algobase.h:195:5: note:   template argument deduction/substitution failed:
bridge.cpp:81:109: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'long long unsigned int')
             mn = min(mn, 1LL * vals[i] * (i + 1) - sum + (tot - sum) - 1LL * vals[i] * (vals.size() - i - 1));
                                                                                                             ^
In file included from /usr/include/c++/7/bits/char_traits.h:39:0,
                 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 bridge.cpp:1:
/usr/include/c++/7/bits/stl_algobase.h:243:5: note: candidate: template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)
     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
     ^~~
/usr/include/c++/7/bits/stl_algobase.h:243:5: note:   template argument deduction/substitution failed:
bridge.cpp:81:109: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'long long unsigned int')
             mn = min(mn, 1LL * vals[i] * (i + 1) - sum + (tot - sum) - 1LL * vals[i] * (vals.size() - i - 1));
                                                                                                             ^
In file included from /usr/include/c++/7/algorithm:62:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:65,
                 from bridge.cpp:1:
/usr/include/c++/7/bits/stl_algo.h:3450:5: note: candidate: template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)
     min(initializer_list<_Tp> __l)
     ^~~
/usr/include/c++/7/bits/stl_algo.h:3450:5: note:   template argument deduction/substitution failed:
bridge.cpp:81:109: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
             mn = min(mn, 1LL * vals[i] * (i + 1) - sum + (tot - sum) - 1LL * vals[i] * (vals.size() - i - 1));
                                                                                                             ^
In file included from /usr/include/c++/7/algorithm:62:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:65,
                 from bridge.cpp:1:
/usr/include/c++/7/bits/stl_algo.h:3456:5: note: candidate: template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)
     min(initializer_list<_Tp> __l, _Compare __comp)
     ^~~
/usr/include/c++/7/bits/stl_algo.h:3456:5: note:   template argument deduction/substitution failed:
bridge.cpp:81:109: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
             mn = min(mn, 1LL * vals[i] * (i + 1) - sum + (tot - sum) - 1LL * vals[i] * (vals.size() - i - 1));
                                                                                                             ^