#include "shortcut.h"
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
using namespace std;
const long long INF = 1e17;
typedef long long ll;
const ll MOD = 1000002022;
#define F first
#define P pair
#define S second
#define pb push_back
#define V vector
#define all(v) v.begin(), v.end()
long long find_shortcut(int n, std::vector <int> l, std::vector <int> d, int c) {
ll cst=c;
ll pref[n];
pref[0]=0;
ll f1[n],f2[n];
f1[0]=0LL,f2[n-1]=0LL;
for (int i=1;i<n;i++) {
pref[i]=pref[i-1]+l[i-1];
}
ll md[n],mx [n];
md[0]=pref[0]-d[0];
mx[n-1]=pref[n-1]+d[n-1];
for (int i=1;i<n;i++) {
md[i]=min(md[i-1],pref[i]-d[i]);
}
for (int i=n-2;i>=0;--i) {
mx[i]=max(mx[i+1],pref[i]+d[i]);
}
for (int i=1;i<n;i++) {
f1[i]=max(f1[i-1],pref[i]+d[i]-md[i-1]);
}
for (int i=n-2;i>=0;i--) {
f2[i]=max(f2[i+1],mx[i+1]-(pref[i]-d[i]));
}
ll ans=f1[n-1];
for (int i=0;i<n;i++) {
ll maxd=0,mind=INF;
ll mx1=0,mn1=INF;
ll z=0;
for (int j=i+1;j<n;j++) {
if (i-1>0) {
z=max(z,mx1-md[i-1]);
}
if (j+1<n) {
z=max(z,mx[j+1]-mn1);
}
ll x=max(maxd,pref[j]+d[j]-mind);
ll y=mx[j]-md[i]-(pref[j]-pref[i])+cst;
ll a=max(x,max(y,z));
ll b=max(f1[i],f2[j]);
ans=min(ans,max(a,b));
maxd=max(maxd,pref[j]-pref[i]+d[j]+d[i]);
maxd=max(maxd,pref[j]+d[j]-mind);
mind=min(mind,pref[j]-d[j]);
mx1=max(mx1,pref[j]+d[j]);
mn1=min(mn1,pref[j]-d[j]);
}
}
return ans;
}
Compilation message (stderr)
shortcut.h:1:9: warning: #pragma once in main file
1 | #pragma once
| ^~~~
shortcut_c.h:1:9: warning: #pragma once in main file
1 | #pragma once
| ^~~~
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |