Submission #3951206
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MOD = 1e9+7;
const ll INF = 1e18;
const int N = 2e5+5;
const ll M = 1e12+5;
template<ll SZ>
struct LiChao_min{
struct Line{
ll k,m;
Line(){k=0,m=0;}
Line(ll _k,ll _m){k=_k,m=_m;}
ll Get(ll x){return k*x+m;}
};
struct node{
node *l, *r;
Line p;
node(){p=Line(),l=nullptr,r=nullptr;}
node(ll k,ll m){p=Line(k,m),l=nullptr,r=nullptr;}
node(Line _p){p=_p,l=nullptr,r=nullptr;}
};
typedef node* pnode;
pnode root = nullptr;
void Reset(){root=nullptr;}
void Set(ll k,ll m){
Line p = Line(k,m);
Set(root,0,SZ,p);
}
void Set(Line p){
Set(root,0,SZ,p);
}
ll Get(ll x){return Get(root,0,SZ,x);}
void Set(pnode &v,ll ss,ll se,Line t){
if(!v){
v = new node(t);
return;
}
if(t.Get(ss)<v->p.Get(ss)&&t.Get(se)<v->p.Get(se)){v->p=t;return;}
if(t.Get(ss)>=v->p.Get(ss)&&t.Get(se)>=v->p.Get(se))return;
ll mid=(ss+se)>>1LL;
if(t.Get(ss)>v->p.Get(ss)&&t.Get(mid)<v->p.Get(mid)){
swap(t,v->p);
Set(v->l,ss,mid,t);
}else if(t.Get(ss)>v->p.Get(ss)&&t.Get(mid)>v->p.Get(mid)){
Set(v->r,mid+1,se,t);
}else if(t.Get(ss)<v->p.Get(ss)&&t.Get(mid)>v->p.Get(mid)){
Set(v->l,ss,mid,t);
}else{
swap(t,v->p);
Set(v->r,mid+1,se,t);
}
}
ll Get(pnode &v,ll ss,ll se,ll x){
if(v==nullptr)return INF;
if(ss==se)return v->p.Get(x);
ll mid=(ss+se)>>1LL;
if(x<=mid)return min(v->p.Get(x),Get(v->l,ss,mid,x));
return min(v->p.Get(x),Get(v->r,mid+1,se,x));
}
};
LiChao_min<M>tree;
int n;
ll c,h[N],dp[N];
int main()
{
ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
cin>>n>>c;
for(int i=1;i<=n;i++)cin>>h[i];
dp[1]=0;
tree.Set(-2LL*h[1],h[1]*h[1]);
for(int i=2;i<=n;i++){
dp[i]=tree.Get(h[i])+h[i]*h[i]+c;
tree.Set(-2LL*h[i],dp[i]+h[i]*h[i]);
}
cout<<dp[n];
return 0;
}
Submission Info
| Submission Time |
|
| Task |
Z - Frog 3 |
| User |
Vasiljko |
| Language |
C++14 (GCC 5.4.1) |
| Score |
0 |
| Code Size |
2255 Byte |
| Status |
WA |
| Exec Time |
81 ms |
| Memory |
12800 KiB |
Judge Result
| Set Name |
All |
| Score / Max Score |
0 / 100 |
| Status |
|
| Set Name |
Test Cases |
| All |
0_00, 0_01, 0_02, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11, 1_12, 1_13, 1_14, 1_15, 1_16, 1_17, 1_18, 1_19, 1_20, 1_21, 1_22, 1_23, 1_24, 1_25, 1_26, 1_27, 1_28, 1_29, 1_30, 1_31, 1_32, 1_33, 1_34, 1_35 |
| Case Name |
Status |
Exec Time |
Memory |
| 0_00 |
AC |
1 ms |
256 KiB |
| 0_01 |
AC |
1 ms |
256 KiB |
| 0_02 |
AC |
1 ms |
256 KiB |
| 1_00 |
AC |
1 ms |
256 KiB |
| 1_01 |
AC |
1 ms |
256 KiB |
| 1_02 |
AC |
74 ms |
12800 KiB |
| 1_03 |
AC |
75 ms |
12544 KiB |
| 1_04 |
WA |
81 ms |
12672 KiB |
| 1_05 |
WA |
79 ms |
11776 KiB |
| 1_06 |
AC |
56 ms |
8320 KiB |
| 1_07 |
AC |
75 ms |
12672 KiB |
| 1_08 |
AC |
74 ms |
9984 KiB |
| 1_09 |
AC |
75 ms |
9856 KiB |
| 1_10 |
WA |
79 ms |
9984 KiB |
| 1_11 |
WA |
78 ms |
9856 KiB |
| 1_12 |
WA |
78 ms |
9600 KiB |
| 1_13 |
WA |
78 ms |
9344 KiB |
| 1_14 |
WA |
77 ms |
9344 KiB |
| 1_15 |
AC |
76 ms |
9216 KiB |
| 1_16 |
AC |
67 ms |
8192 KiB |
| 1_17 |
AC |
59 ms |
6912 KiB |
| 1_18 |
AC |
50 ms |
5760 KiB |
| 1_19 |
WA |
62 ms |
9600 KiB |
| 1_20 |
AC |
63 ms |
8576 KiB |
| 1_21 |
AC |
63 ms |
8320 KiB |
| 1_22 |
AC |
55 ms |
6144 KiB |
| 1_23 |
AC |
58 ms |
7296 KiB |
| 1_24 |
AC |
53 ms |
6016 KiB |
| 1_25 |
AC |
62 ms |
8448 KiB |
| 1_26 |
AC |
68 ms |
9344 KiB |
| 1_27 |
AC |
60 ms |
7168 KiB |
| 1_28 |
AC |
63 ms |
8192 KiB |
| 1_29 |
WA |
63 ms |
8192 KiB |
| 1_30 |
WA |
71 ms |
8448 KiB |
| 1_31 |
AC |
61 ms |
8192 KiB |
| 1_32 |
AC |
51 ms |
5632 KiB |
| 1_33 |
AC |
70 ms |
10368 KiB |
| 1_34 |
AC |
57 ms |
7040 KiB |
| 1_35 |
AC |
58 ms |
7040 KiB |