Submission #1312703

#TimeUsernameProblemLanguageResultExecution timeMemory
1312703btkhgPalembang Bridges (APIO15_bridge)C++20
22 / 100
30 ms5036 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; ll cost_one_bridge(const vector<pair<ll,ll>>& segs) { vector<ll> pts; for (auto &p : segs) { pts.push_back(p.first); pts.push_back(p.second); } sort(pts.begin(), pts.end()); ll x = pts[pts.size()/2]; ll cost = 0; for (auto &p : segs) { cost += abs(p.first - x) + abs(p.second - x) + 1; } return cost; } ll cost_group(const vector<pair<ll,ll>>& segs) { if (segs.empty()) return 0; vector<ll> pts; for (auto &p : segs) { pts.push_back(p.first); pts.push_back(p.second); } sort(pts.begin(), pts.end()); ll x = pts[pts.size()/2]; ll cost = 0; for (auto &p : segs) { cost += abs(p.first - x) + abs(p.second - x) + 1; } return cost; } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int K, N; cin >> K >> N; ll answer = 0; vector<pair<ll,ll>> cross; for (int i = 0; i < N; i++) { char P, Q; ll S, T; cin >> P >> S >> Q >> T; if (P == Q) { answer += llabs(S - T); } else { ll L = min(S, T); ll R = max(S, T); cross.push_back({L, R}); } } if (cross.empty()) { cout << answer << "\n"; return 0; } if (K == 1) { answer += cost_one_bridge(cross); cout << answer << "\n"; return 0; } sort(cross.begin(), cross.end()); int M = cross.size(); vector<ll> pref(M+1), suff(M+2); vector<pair<ll,ll>> tmp; for (int i = 0; i < M; i++) { tmp.push_back(cross[i]); pref[i+1] = cost_group(tmp); } tmp.clear(); for (int i = M-1; i >= 0; i--) { tmp.push_back(cross[i]); suff[i+1] = cost_group(tmp); } ll best = LLONG_MAX; for (int i = 0; i <= M; i++) { best = min(best, pref[i] + suff[i+1]); } answer += best; cout << answer << "\n"; }
#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...