Submission #887487

#TimeUsernameProblemLanguageResultExecution timeMemory
887487theghostkingPalembang Bridges (APIO15_bridge)C++17
22 / 100
80 ms4392 KiB
#include <bits/stdc++.h> using namespace std; #define int long long bool comp(pair<int,int> a, pair<int,int> b){ return a.first+a.second < b.first+b.second; } signed main() { int k,n; cin >> k >> n; if (k == 1){ int dist = 0; vector<int> arr; for (int i = 0; i<n; i++){ char a1,a2; int d1,d2; cin >> a1 >> d1 >> a2 >> d2; if (a1 == a2){ dist += abs(d1-d2); } else{ dist++; arr.push_back(d1); arr.push_back(d2); } } sort(arr.begin(),arr.end()); int vv = arr.size()/2; int md = arr[vv]; for (auto u : arr){ dist += abs(md-u); } cout << dist << '\n'; } else if (k == 2){ int dist = 0; vector<pair<int,int>> arr; for (int i = 0; i<n; i++){ char a1,a2; int d1,d2; cin >> a1 >> d1 >> a2 >> d2; if (a1 == a2){ dist += abs(d1-d2); } else{ dist++; pair<int,int> tp = {d1,d2}; arr.push_back(tp); } } sort(arr.begin(),arr.end(),comp); int fst[arr.size()], scd[arr.size()]; priority_queue<int> g,s; int ls = 0; int mr = 0; for (int i = 0; i<arr.size(); i++){ g.push(-arr[i].first); g.push(-arr[i].second); mr += arr[i].first; mr += arr[i].second; while (g.size() > s.size()){ int temp = g.top(); g.pop(); s.push(-temp); ls += abs(temp); mr -= abs(temp); } int mid = s.top(); int one = (s.size()*mid)-ls; int two = mr-(g.size()*mid); fst[i] = abs(one)+abs(two); } while (g.size()) g.pop(); while (s.size()) s.pop(); ls = 0; mr = 0; for (int i = arr.size()-1; i>=0; i--){ g.push(-arr[i].first); g.push(-arr[i].second); mr += arr[i].first; mr += arr[i].second; while (g.size() > s.size()){ int temp = g.top(); g.pop(); s.push(-temp); ls += abs(temp); mr -= abs(temp); } int mid = s.top(); int one = (s.size()*mid)-ls; int two = mr-(g.size()*mid); scd[i] = abs(one)+abs(two); } int xtra = 1e18; for (int i = 0; i<arr.size()-1; i++){ xtra = min(scd[i+1]+fst[i],xtra); } cout << dist+xtra << '\n'; } return 0; }

Compilation message (stderr)

bridge.cpp: In function 'int main()':
bridge.cpp:58:26: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   58 |         for (int i = 0; i<arr.size(); i++){
      |                         ~^~~~~~~~~~~
bridge.cpp:99:26: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   99 |         for (int i = 0; i<arr.size()-1; i++){
      |                         ~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...