이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "shortcut.h"
#include<bits/stdc++.h>
#define st first
#define nd second
using namespace std;
const int N=3005;
typedef long long ll;
const ll INF=1e18;
struct kol{
deque<pair<ll, int> > Q;
void push(ll a){
int sum=1;
while(Q.size() && Q.back().st>a){
sum+=Q.back().nd;
Q.pop_back();
}
Q.push_back({a, sum});
}
void pop(){
if(!--Q.front().nd)Q.pop_front();
}
ll maks(){
if(!Q.size())return -INF;
return Q.front().st;
}
};
ll lew[N], pra[N], tab[N], dist[N], dist2[N], lew2[N], pra2[N];
int C;
ll calc(int a, int b){
dist[a]=lew[a];
dist[b]=pra[b];
ll ans=max(pra2[b], lew2[a]);
int j=a;
kol q;
q.push(tab[a]+dist[a]);
//cout<<a<<" "<<b<<"\n";
for(int i=a; i<=b; i++){
/*while(j<b && tab[j+1]-tab[i]>=tab[b]-tab[j+1]+C+tab[i]-tab[a]){
q.push(tab[j]+dist[j]);
}
q.pop();
ans=max(ans, q.maks());*/
for(int j=i+1; j<=b; j++){
//cout<<i<<j<<" "<<dist[i]<<" "<<dist[j]<<" "<<tab[j]-tab[i]<<" "<<tab[b]-tab[j]+C+tab[i]-tab[a]<<"\n";
ans=max(ans, dist[i]+dist[j]+min(tab[j]-tab[i], tab[b]-tab[j]+C+tab[i]-tab[a]));
}
}
dist[a]=dist2[a];
dist[b]=dist2[b];
//cout<<a<<" "<<b<<" "<<ans<<"\n";
return ans;
}
long long find_shortcut(int n, std::vector<int> l, std::vector<int> d, int c)
{
C=c;
for(int i=1; i<n; i++){
tab[i]=tab[i-1]+l[i-1];
}
for(int i=0; i<n; i++){
dist[i]=dist2[i]=d[i];
lew[i]=d[i];
if(i){
lew[i]=max(lew[i], lew[i-1]+l[i-1]);
lew2[i]=max(lew2[i-1], lew[i-1]+d[i]+l[i-1]);
}
}
for(int i=n-1; i>=0; i--){
pra[i]=d[i];
if(i+1<n){
pra[i]=max(pra[i], pra[i+1]+l[i]);
pra2[i]=max(pra2[i+1], pra[i+1]+d[i]+l[i]);
}
}
ll ans=INF;
for(int i=0; i<n; i++){
for(int j=i+1; j<n; ++j){
ans=min(ans, calc(i, j));
}
}
return ans;
}
컴파일 시 표준 에러 (stderr) 메시지
shortcut.cpp: In function 'll calc(int, int)':
shortcut.cpp:33:6: warning: unused variable 'j' [-Wunused-variable]
33 | int j=a;
| ^
# | 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... |