| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 939051 | vjudge1 | Building Bridges (CEOI17_building) | C++17 | 41 ms | 2652 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 int long long
#define pb push_back
#define fr first
#define sc second
const long long INF=1e17,N=2e5+6;
int h[N],c[N];
int f(int l, int r){
int val=(h[r]-h[l])*(h[r]-h[l]);
for(int i=l+1;i<r;i++)
val+=c[i];
int res=val;
vector<int> md;
int sum=res-(h[r]-h[l])*(h[r]-h[l]);
for(int i=l+1;i<r;i++){
int tmp=(sum-c[i]+(h[l]-h[i])*(h[l]-h[i])+
(h[r]-h[i])*(h[r]-h[i]));
if(tmp<res){
res=tmp;
md.clear();
md.pb(i);
}
else if(tmp==res){
md.pb(i);
}
}
if(md.size()==0) return res;
for(auto it: md){
res=min(res,f(l,it)+f(it,r));
}
return res;
}
void solve(){
int n;cin>>n;
for(int i=1;i<=n;i++)
cin>>h[i];
for(int i=1;i<=n;i++)
cin>>c[i];
cout<<f(1,n);
}
main(){
int T=1;
//cin>>T;
while(T--){
solve();
}
}
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... | ||||
