Submission #831774

#TimeUsernameProblemLanguageResultExecution timeMemory
831774serifefedartarPalembang Bridges (APIO15_bridge)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; #define fast ios::sync_with_stdio(0);cin.tie(0); typedef long long ll; #define f first #define s second #define MOD 1000000007 #define LOGN 18 #define MAXN 200005 vector<pair<ll,ll>> seq; int main() { fast ll K, N; cin >> K >> N; ll sum = 0; for (int i = 0; i < N; i++) { char ch1, ch2; ll posR1, posR2; cin >> ch1 >> posR1 >> ch2 >> posR2; if (ch1 == ch2) sum += abs(posR1 - posR2); else seq.push_back({min(posR1, posR2), max(posR1, posR2)}); } sort(seq.begin(), seq.end(), [&](pair<int,int> a, pair<int,int> b) { return a.f + a.s < b.f + b.s; }); sum += seq.size(); if (seq.size() == 0) { cout << sum << "\n"; return 0; } multiset<int> sR1, sR2, sL1, sL2; ll sumR1 = 0, sumR2 = 0, sumL1 = 0, sumL2 = 0; for (int i = 0; i < seq.size()/2; i++) { sR1.insert(seq[i].f); sR1.insert(seq[i].s); sumR1 += seq[i].f + seq[i].s; } for (int i = seq.size()/2; i < (seq.size()/2) * 2; i++) { sR2.insert(seq[i].f); sR2.insert(seq[i].s); sumR2 += seq[i].f + seq[i].s; } if (seq.size() % 2) { sR1.insert(seq[seq.size()-1].f); sR2.insert(seq[seq.size()-1].s); sumR1 += seq[seq.size()-1].f; sumR2 += seq[seq.size()-1].s; } while (*(--sR1.end()) > *(sR2.begin())) { sR1.insert(*(sR2.begin())); sumR1 += *(sR2.begin()); sumR2 -= *(sR2.begin()); sR2.erase(sR2.begin()); sR2.insert(*(--sR1.end())); sumR2 += *(--sR1.end()); sumR1 -= *(--sR1.end()); sR1.erase(sR1.find(*(--sR1.end()))); } ll median = *(--sR1.end()); ll ans = sR1.size()*median - sumR1 + sumR2 - sR2.size()*median + sum; if (K == 2) { for (int i = 0; i < seq.size() - 1; i++) { ll val1 = seq[i].f; ll val2 = seq[i].s; if (sR1.count(val1)) { sR1.erase(sR1.find(val1)); sumR1 -= val1; } else { sR2.erase(sR2.find(val1)); sumR2 -= val1; } if (sR1.count(val2)) { sR1.erase(sR1.find(val2)); sumR1 -= val2; } else { sR2.erase(sR2.find(val2)); sumR2 -= val2; } sL1.insert(val1); sL2.insert(val2); sumL1 += val1; sumL2 += val2; while (sR1.size() > sR2.size()) { sR2.insert(*(--sR1.end())); sumR2 += *(--sR1.end()); sumR1 += *(--sR1.end()); sR1.erase(sR1.find(*(--sR1.end()))); } while (sR2.size() > sR1.size()) { sR1.insert(*(sR2.begin())); sumR1 += *(sR2.begin()); sumR2 -= *(sR2.begin()); sR2.erase(sR2.begin()); } while (sL1.size() > sL2.size()) { sL2.insert(*(--sL1.end())); sumL2 += *(--sL1.end()); sumL1 += *(--sL1.end()); sL1.erase(sL1.find(*(--sL1.end()))); } while (sL2.size() > sL1.size()) { sL1.insert(*(sL2.begin())); sumL1 += *(sL2.begin()); sumL2 -= *(sL2.begin()); sL2.erase(sL2.begin()); } while (*(--sR1.end()) > *(sR2.begin())) { sR1.insert(*(sR2.begin())); sumR1 += *(sR2.begin()); sumR2 -= *(sR2.begin()); sR2.erase(sR2.begin()); sR2.insert(*(--sR1.end())); sumR2 += *(--sR1.end()); sumR1 -= *(--sR1.end()); sR1.erase(sR1.find(*(--sR1.end()))); } while (*(--sL1.end()) > *(sL2.begin())) { sL1.insert(*(sL2.begin())); sumL1 += *(sL2.begin()); sumL2 -= *(sL2.begin()); sL2.erase(sL2.begin()); sL2.insert(*(--sL1.end())); sumL2 += *(--sL1.end()); sumL1 -= *(--sL1.end()); sL1.erase(sL1.find(*(--sL1.end()))); } ll median1 = *(--sR1.end()); ll median2 = *(--sL1.end()); ans = min(ans, sR1.size()*median1 - sumR1 + sumR2 - sR2.size()*median1 + sum + sL1.size()*median2 - sumL1 + sumL2 - sL2.size()*median2); } } cout << ans << "\n"; }

Compilation message (stderr)

bridge.cpp: In function 'int main()':
bridge.cpp:41:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   41 |  for (int i = 0; i < seq.size()/2; i++) {
      |                  ~~^~~~~~~~~~~~~~
bridge.cpp:46:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   46 |  for (int i = seq.size()/2; i < (seq.size()/2) * 2; i++) {
      |                             ~~^~~~~~~~~~~~~~~~~~~~
bridge.cpp:72:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   72 |   for (int i = 0; i < seq.size() - 1; i++) {
      |                   ~~^~~~~~~~~~~~~~~~
bridge.cpp:142:64: error: no matching function for call to 'min(ll&, long long unsigned int)'
  142 |       + sL1.size()*median2 - sumL1 + sumL2 - sL2.size()*median2);
      |                                                                ^
In file included from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from bridge.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:230:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)'
  230 |     min(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:230:5: note:   template argument deduction/substitution failed:
bridge.cpp:142:64: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'long long unsigned int')
  142 |       + sL1.size()*median2 - sumL1 + sumL2 - sL2.size()*median2);
      |                                                                ^
In file included from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from bridge.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:278:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)'
  278 |     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:278:5: note:   template argument deduction/substitution failed:
bridge.cpp:142:64: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'long long unsigned int')
  142 |       + sL1.size()*median2 - sumL1 + sumL2 - sL2.size()*median2);
      |                                                                ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from bridge.cpp:1:
/usr/include/c++/10/bits/stl_algo.h:3468:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)'
 3468 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3468:5: note:   template argument deduction/substitution failed:
bridge.cpp:142:64: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
  142 |       + sL1.size()*median2 - sumL1 + sumL2 - sL2.size()*median2);
      |                                                                ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from bridge.cpp:1:
/usr/include/c++/10/bits/stl_algo.h:3474:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)'
 3474 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3474:5: note:   template argument deduction/substitution failed:
bridge.cpp:142:64: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
  142 |       + sL1.size()*median2 - sumL1 + sumL2 - sL2.size()*median2);
      |                                                                ^