# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1079313 | sjb8032 | Marathon Race 2 (JOI24_ho_t3) | C++17 | 217 ms | 137808 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
int n,q;
long long x[2005];
long long dpL[2005][2005][2];
long long dpR[2005][2005][2];
long long s,g,t;
const long long INF=1000000000000000000;
long long ans;
int main()
{
scanf("%d %d",&n,&q);
for(int i=1; i<=n; i++)
{
scanf("%lld",&x[i]);
}
sort(x+1,x+n+1);
scanf("%d",&q);
for(int i=0; i<=n+1; i++)
{
for(int j=0; j<=n+1; j++)
{
dpL[i][j][0]=INF;
dpL[i][j][1]=INF;
dpR[i][j][0]=INF;
dpR[i][j][1]=INF;
}
}
dpL[1][n+1][0]=0;
dpR[0][n][1]=0;
for(int i=0;i<=n;i++)
{
for(int j=n+1;j>i;j--)
{
int carry=i+(n+1-j)+1;
if(i+1<j)
{
dpL[i+1][j][0]=min(dpL[i+1][j][0],min(dpL[i][j][0]+carry*(x[i+1]-x[i]),dpL[i][j][1]+carry*(x[j]-x[i+1])));
dpR[i+1][j][0]=min(dpR[i+1][j][0],min(dpR[i][j][0]+carry*(x[i+1]-x[i]),dpR[i][j][1]+carry*(x[j]-x[i+1])));
}
if(i<j-1)
{
dpL[i][j-1][1]=min(dpL[i][j-1][1],min(dpL[i][j][0]+carry*(x[j-1]-x[i]),dpL[i][j][1]+carry*(x[j]-x[j-1])));
dpR[i][j-1][1]=min(dpR[i][j-1][1],min(dpR[i][j][0]+carry*(x[j-1]-x[i]),dpR[i][j][1]+carry*(x[j]-x[j-1])));
}
}
}
for(int i=1; i<=q; i++)
{
scanf("%lld %lld %lld",&s,&g,&t);/// g를 기준으로 왼,오 1,2,3,...,l,r,r+1,...,n
if(n==1)
{
ans=abs(s-x[1])+2*abs(x[1]-g);
ans++;
if(ans<=t) printf("Yes\n");
else printf("No\n");
continue;
}
int k=lower_bound(x+1,x+n+1,g)-x;///g 이상 처음나오는 값의 위치 k번째 왼쪽 k-1-> g 또는 오른쪽 k에서 g k->g
long long Lmin=min(dpL[k-1][k][0]+(n+1)*abs(g-x[k-1]),dpL[k-1][k][1]+(n+1)*abs(g-x[k]))+abs(s-x[1]);
long long Rmin=min(dpR[k-1][k][0]+(n+1)*abs(g-x[k-1]),dpR[k-1][k][1]+(n+1)*abs(g-x[k]))+abs(s-x[n]);
ans=min(Rmin,Lmin)+n;
if(ans<=t) printf("Yes\n");
else printf("No\n");
}
return 0;
}
/// dp를 새로 계산하지 않고 해야 함->
컴파일 시 표준 에러 (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... |
# | 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... |