Submission #978886

#TimeUsernameProblemLanguageResultExecution timeMemory
978886LalicWiring (IOI17_wiring)C++17
13 / 100
18 ms4240 KiB
#include "wiring.h" #include <bits/stdc++.h> using namespace std; #define fi first #define se second #define pb push_back #define all(x) x.begin(), x.end() #define allr(x) x.rbegin(), x.rend() #define mp make_pair typedef long long ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; const int MAXN = 1e5+10; const int MOD = 1e9+7; const int INF = 0x3f3f3f3f; const ll LINF = 0x3f3f3f3f3f3f3f3f; ll min_total_length(vector<int> r, vector<int> b) { int n=(int)r.size(), m=(int)b.size(); if(n>m){ swap(n, m); swap(r, b); } r.pb(-1e9-2); ll ans=0; int last=0; for(int i=0;i<n;i++){ int low=last+1, high=m-n+i, best=last; while(low<=high){ int mid=(low+high)>>1; if(abs(b[mid]-r[i])<=abs(b[mid]-r[i+1])){ best=mid; low=mid+1; } else high=mid-1; } while(last<=best){ ans+=abs(b[last]-r[i]); last++; } } return ans; }
#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...