This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define ll long long
#define ff first
#define ss second
#define all(s) s.begin(),s.end()
const ll INF=1e18;
int main(){
ll k,n;
cin>>k>>n;
ll l[n+5],r[n+5];
ll dist=0,cur=0;
vector<ll>v;
for(ll i=1;i<=n;i++){
char a,b;
ll p,q;
cin>>a>>p>>b>>q;
dist+=abs(p-q);
if(a!=b){
l[cur]=min(p,q);
r[cur]=max(p,q);
cur++;
v.pb(p);
v.pb(q);
}
}
dist+=cur;
if(v.size()==0){
cout<<dist;
return 0;
}
sort(l,l+cur);
sort(r,r+cur);
sort(all(v));
ll suml=0,sumr=0;
for(ll i=0;i<cur;i++){
sumr+=l[i];
}
ll c=0,d=0;
ll ans=INF;
for(auto x:v){
while(c<cur&&r[c]<x){
suml+=r[c];
c++;
}
while(d<cur&&l[d]<=x){
sumr-=l[d];
d++;
}
ans=min(ans,dist+(x*c-suml)*2+(sumr-x*(cur-d))*2);
}
cout<<ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |