# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
100175 | TadijaSebez | Palembang Bridges (APIO15_bridge) | C++11 | 475 ms | 14960 KiB |
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 mp make_pair
#define ll long long
const int N=100050;
const ll inf=9e18;
int l[N],r[N];
ll dp[N][2];
int main()
{
int k,n;
scanf("%i %i",&k,&n);
char a,b;
ll all=0;
vector<int> work;
for(int i=1;i<=n;i++)
{
scanf("\n%c %i %c %i",&a,&l[i],&b,&r[i]);
if(a!=b)
{
if(l[i]>r[i]) swap(l[i],r[i]);
work.pb(i);
}
else all+=abs(l[i]-r[i]);
}
if(work.empty()) return 0*printf("%lld\n",all);
sort(work.begin(),work.end(),[&](int x, int y){ return l[x]+r[x]<l[y]+r[y];});
for(int k=0;k<=1;k++)
{
multiset<int> st;
dp[0][k]=abs(r[work[0]]-l[work[0]]);
st.insert(l[work[0]]);
st.insert(r[work[0]]);
auto it=st.begin();
for(int j=1;j<work.size();j++)
{
int i=work[j];
st.insert(l[i]);
st.insert(r[i]);
int last=*it;
dp[j][k]=dp[j-1][k];
if(l[i]>=*it && r[i]>=*it) it++;
else if(l[i]<*it && r[i]<*it) it--,dp[j][k]+=2*abs(last-*it);
dp[j][k]+=abs(l[i]-*it)+abs(r[i]-*it);
}
reverse(work.begin(),work.end());
//for(int i=0;i<work.size();i++) printf("%lld ",dp[i][k]);printf("\n");
}
if(k==1) printf("%lld\n",dp[work.size()-1][0]+all+work.size());
else
{
ll ans=min(dp[work.size()-1][0],dp[work.size()-1][1]);
for(int i=0;i<work.size();i++)
{
ans=min(ans,dp[i][0]+dp[work.size()-i-2][1]);
}
printf("%lld\n",ans+all+work.size());
}
return 0;
}
Compilation message (stderr)
# | 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... |