| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 125036 | ansol4328 | 요리 강좌 (KOI17_cook) | C++11 | 633 ms | 74272 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<stdio.h>
#include<deque>
#include<utility>
#include<algorithm>
using namespace std;
typedef pair<int,int> P;
int n, m, s, e, t;
int xy[3005][3005], lst[3005];
int dp[3005][3005], sum[3005][3005];
deque<P> dq[3005];
P mval[3005][3];
const int INF=1e9;
void set_mval(int idx)
{
mval[idx][0]=mval[idx][1]=mval[idx][2]=P(INF,INF);
for(int i=1 ; i<=n ; i++)
{
if(mval[idx][0].first>dp[i][idx])
{
mval[idx][2]=mval[idx][1];
mval[idx][1]=mval[idx][0];
mval[idx][0]=P(dp[i][idx],i);
}
else if(mval[idx][1].first>dp[i][idx])
{
mval[idx][2]=mval[idx][1];
mval[idx][1]=P(dp[i][idx],i);
}
else if(mval[idx][2].first>dp[i][idx])
{
mval[idx][2]=P(dp[i][idx],i);
}
}
}
int get_mval(int idx, int t)
{
if(lst[t]!=mval[idx][0].second && t!=mval[idx][0].second) return mval[idx][0].first;
if(lst[t]!=mval[idx][1].second && t!=mval[idx][1].second) return mval[idx][1].first;
return mval[idx][2].first;
}
int main()
{
scanf("%d %d %d %d %d",&n,&m,&s,&e,&t);
for(int i=1 ; i<=n ; i++)
{
for(int j=1 ; j<=m ; j++)
{
scanf("%d",&xy[i][j]);
sum[i][j]=xy[i][j]+sum[i][j-1];
dp[i][j]=INF;
if(j>=s && j<=e) dp[i][j]=sum[i][j];
}
}
for(int i=1 ; i<=n ; i++) scanf("%d",&lst[i]);
for(int i=1 ; i<=min(m,2*s) ; i++) set_mval(i);
for(int j=2*s ; j<=m ; j++)
{
for(int i=1 ; i<=n ; i++)
{
P val=P(get_mval(j-s,i)-sum[i][j-s],j-s);
while(!dq[i].empty() && dq[i].back().first>val.first) dq[i].pop_back();
dq[i].push_back(val);
while(!dq[i].empty() && dq[i].front().second<j-e) dq[i].pop_front();
dp[i][j]=min(dp[i][j],dq[i][0].first+sum[i][j]+t);
}
set_mval(j);
}
for(int j=max(s,m-s+1) ; j<m ; j++)
{
for(int i=1 ; i<=n ; i++)
{
dp[i][m]=min(dp[i][m],get_mval(j,i)-sum[i][j]+sum[i][m]+t);
}
}
int res=INF;
for(int i=1 ; i<=n ; i++) res=min(res,dp[i][m]);
printf("%d",res);
return 0;
}
컴파일 시 표준 에러 (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... | ||||
