Submission #1134570

#TimeUsernameProblemLanguageResultExecution timeMemory
1134570g4yuhgPalembang Bridges (APIO15_bridge)C++20
22 / 100
44 ms6588 KiB
//Huyduocdithitp #include <bits/stdc++.h> typedef long long ll; #define endl '\n' #define yes cout<<"YES"<<endl; #define no cout<<"NO"<<endl; #define fi first #define se second #define pii pair<ll, ll> #define inf 1e18 #define faster ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); #define MP make_pair #define TASK "ghuy4g" #define start if(fopen(TASK".inp","r")){freopen(TASK".inp","r",stdin);freopen(TASK".out","w",stdout);} #define LOG 19 #define N 500005 using namespace std; ll k, n; ll ans_goc = 0; pii a[N]; vector<ll> nenSo; void sub1() { ll ans = inf; sort(a + 1, a + 1 + n); ll sum = 0; ll cur_p = -1; ll cnt_r = n, cnt_l = 0; for (int i = 1; i <= n; i ++) { ll l = a[i].fi, r = a[i].se; //cout << i << " " << l << " " << r << " " << sum << endl; sum += (r - l) + min(abs(r - cur_p), abs(l - cur_p)) * 2 + 1; } //cout << "sum bd: " << sum << endl; ans = min(ans, sum); ll id = 1; priority_queue<pii, vector<pii>, greater<pii>> pq; for (int i = 1; i < nenSo.size(); i ++) { ll nxt_p = nenSo[i]; while (pq.size() && pq.top().fi < nxt_p) { cnt_l ++ ; pq.pop(); } sum -= cnt_r * (nxt_p - cur_p) * 2; sum += cnt_l * (nxt_p - cur_p) * 2; while (id <= n && a[id].fi <= nxt_p) { cnt_r -- ; pq.push({a[id].se, id}); id ++ ; } //cout << i << " " << nxt_p << " " << sum << endl; ans = min(ans, sum); cur_p = nxt_p; } cout << ans + ans_goc; } signed main(void) { faster; ll curid = 0; cin >> k >> n; for (int i = 1; i <= n; i ++) { char bs1, bs2; ll p1, p2; cin >> bs1 >> p1 >> bs2 >> p2; if (bs1 == bs2) { ans_goc += abs(p1 - p2); continue; } curid ++ ; if (p1 > p2) swap(p1, p2); a[curid] = {p1, p2}; nenSo.push_back(p1); nenSo.push_back(p2); } n = curid; nenSo.push_back(-inf); sort(nenSo.begin(), nenSo.end()); nenSo.resize(unique(nenSo.begin(), nenSo.end()) - nenSo.begin()); if (k == 1) { sub1(); } return 0; }
#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...