Submission #1028693

#TimeUsernameProblemLanguageResultExecution timeMemory
1028693vjudge1Palembang Bridges (APIO15_bridge)C++17
22 / 100
83 ms5840 KiB
#include <bits/stdc++.h> using namespace std; #define int long long int const N=2e5+5; int const inf=1e16; vector<int> arr; int pre[N]; void solve(){ int n; cin>>n; vector<pair<int,int>> pr; set<int> st; int ex=0; for (int i = 0; i < n; ++i) { char c,d; int a,b; cin>>c>>a>>d>>b; if(c==d) ex+=abs(a-b); else{ pr.push_back({a,b}); st.insert(a); st.insert(b); } } n=pr.size(); int ans=inf; for(int b1:st) for(int b2:st){ int temp=n; for(auto [x,y]:pr) temp+=min(abs(x-b1)+abs(y-b1),abs(x-b2)+abs(y-b2)); ans=min(ans,temp); } cout<<ans+ex<<endl; } signed main(){ int k,n; cin>>k; if(k==2){ solve(); return 0; } cin>>n; arr.push_back(0); char c,d; int a,b; int ex=n; for (int i = 1; i <=n; ++i){ cin>>c>>a>>d>>b; if(c==d){ ex--; ex+=abs(a-b); } else{ arr.push_back(a); arr.push_back(b); } } sort(arr.begin(), arr.end()); n=(arr.size())-1; for (int i = 1; i <=n; ++i) pre[i]=pre[i-1]+arr[i]; int ans=pre[n]; // cout<<ans<<endl; for(int i=1;i<=n;i++){ ans=min(ans,((arr[i]*i)-pre[i])+((pre[n]-pre[i])-(arr[i]*(n-i)))); // cout<<pre[i]<<endl; } cout<<ans+ex<<endl; 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...