| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 20430 | I_forgot_password (#35) | Can polan into space? (OJUZ11_space) | C++98 | 146 ms | 23176 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
#define infll 1000000000000000000LL
using namespace std;
long long dp[200005][3][2];
long long cost[200005][3];
int prv[200005][3][2];
int ans[200005];
vector<int> gak[3];
int main(){
int n;
scanf("%d",&n);
for(int i=0;i<=n;i++){
for(int j=0;j<3;j++){
for(int k=0;k<2;k++){
dp[i][j][k] = -infll;
}
}
}
for(int i=1;i<=n;i++){
scanf("%d%d%d",&cost[i][0],&cost[i][1],&cost[i][2]);
}
dp[0][2][1] = 0;
for(int i=1;i<=n;i++){
for(int j=0;j<3;j++){
/**dp[i][j][k] : j�� ����, k�� i+1��°�� i��°���� ���� �Ǿ���ϴ°�??*/
dp[i][0][0] = max(dp[i][0][0], dp[i-1][j][1] + cost[i][0]);
if(dp[i][0][0] == dp[i-1][j][1] + cost[i][0]) prv[i][0][0] = j;
dp[i][1][0] = max(dp[i][1][0], dp[i-1][j][0] + cost[i][1]);
if(dp[i][1][0] == dp[i-1][j][0] + cost[i][1]) prv[i][1][0] = j;
dp[i][1][1] = max(dp[i][1][1], dp[i-1][j][1] + cost[i][1]);
if(dp[i][1][1] == dp[i-1][j][1] + cost[i][1]) prv[i][1][1] = j;
dp[i][2][1] = max(dp[i][2][1], dp[i-1][j][0] + cost[i][2]);
if(dp[i][2][1] == dp[i-1][j][0] + cost[i][2]) prv[i][2][1] = j;
}
//printf("%lld %lld %lld %lld\n",dp[i][0][0],dp[i][1][0],dp[i][1][1],dp[i][2][1]);
}
printf("%lld\n",max(dp[n][0][0],dp[n][1][0]));
pair<int,int> now_status;
if(dp[n][0][0]<dp[n][1][0]) now_status = make_pair(1,0);
else now_status = make_pair(0,0);
for(int i=n;i>=1;i--){
ans[i] = now_status.first;
gak[ans[i]].push_back(i);
now_status = make_pair(prv[i][now_status.first][now_status.second],1 + now_status.second - now_status.first);
}
ans[0] = 2; ans[n+1]=2;
for(int i=0;i<gak[0].size();i++){
printf("%d ",gak[0][i]);
int target = gak[0][i]-1;
while(ans[target]==1){
printf("%d ",target);
target--;
}
target = gak[0][i]+1;
while(ans[target]==1){
printf("%d ",target);
target++;
}
}
for(int i=0;i<gak[2].size();i++) printf("%d ",gak[2][i]);
printf("\n");
}
컴파일 시 표준 에러 (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... | ||||
