Submission #1144000

#TimeUsernameProblemLanguageResultExecution timeMemory
1144000alir3za_zar3Palembang Bridges (APIO15_bridge)C++20
0 / 100
0 ms328 KiB
// Alir3za.Zar3 -> Shiraz , Iran #include <bits/stdc++.h> using namespace std; #define int long long const int N = 1e5+7 , Inf = 2e18; int k,n , out=0 , O = 1e9; vector<pair<int,int>> q; void iN () { cin >> k >> n; for (int i=1; i<=n; i++) { char P , Q; int S , T; cin >> P >> S >> Q >> T; out += abs(S - T) + (P != Q); if (P != Q) q.push_back({min(S,T),max(S,T)}); } } pair<int,bool> oK (int v1 , int v2) { int s = 0 , l=0 , r=0; for (auto [a,b] : q) { int k1 = 0 , k2 = 0; if (a > v2) r++; if (v1 <= a and b <= v2) k1=a-v1 , k2=v2-b; else if (a <= v1 and v2 <= b) k1=0 , k2=0; else if (a <= v1 and v1 <= b) k1=0 , k2=v2-b; else if (a <= v2 and v2 <= b) k1=v1-a , k2=0; else if (b < v1) k1=v1-b , k2=v2-b; else if (a > v2) k1=a-v1 , k2=a-v2; k1 <<= 1; k2 <<= 1; s += min(k1 , k2); if (k2 < k1 and b <= v2) l++; } return {s , r>=l}; } int nxt_Binary (int l , int r , int p) { while (r-l > 2) { int o = (l+r) >> 1; if (oK(p , o).second) l=o; else r=o; } int mn = Inf; for (int i=l; i<=r; i++) mn = min(mn , oK(p , i).first); return mn; } void Ternary_Search () { int l=0 , r=O; while (r-l > 2) { int o = (r-l) / 3; int v1 = l+o , v2 = l+2*o; int q1 = nxt_Binary(v1,O,v1); int q2 = nxt_Binary(v2,O,v2); if (q1 < q2) r=v2; else if (q1 == q2) l=v1,r=v2; else l=v1; } int mn = Inf; for (int i=l; i<=r; i++) mn = min(mn , nxt_Binary(i,O,i)); out += mn; } void ouT () { cout << out << '\n'; } signed main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); iN(); ouT(); }
#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...