# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
244907 | maximath_1 | Collecting Stamps 3 (JOI20_ho_t3) | C++11 | 87 ms | 66168 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
const int inf = 2e9 + 69;
int dpcw[205][205][205], dpccw[205][205][205];
int n, l, x[205], t[205];
int main(){
scanf("%d%d", &n, &l);
for(int i = 1; i <= n; i ++) scanf("%d", &x[i]);
for(int i = 1; i <= n; i ++) scanf("%d", &t[i]);
x[0] = 0; x[n + 1] = l;
for(int i = 0; i <= n; i ++) for(int j = 0; j <= n; j ++) for(int k = 0; k <= n; k ++)
dpcw[i][j][k] = dpccw[i][j][k] = inf;
dpcw[0][0][0] = 0;
for(int tim, i = 0; i < n; i ++) for(int j = 0; i + j < n; j ++) for(int k = 0; k <= i + j; k ++){
if(dpcw[i][j][k] < inf){
tim = dpcw[i][j][k] + (x[i + 1] - x[i]);
dpcw[i + 1][j][k + (t[i + 1] >= tim)] = min(dpcw[i + 1][j][k + (t[i + 1] >= tim)], tim);
tim = dpcw[i][j][k] + (x[i] + l - x[n - j]);
dpccw[i][j + 1][k + (t[n - j] >= tim)] = min(dpccw[i][j + 1][k + (t[n - j] >= tim)], tim);
}
if(dpccw[i][j][k] < inf){
tim = dpccw[i][j][k] + (x[n - j + 1] - x[n - j]);
dpccw[i][j + 1][k + (t[n - j] >= tim)] = min(dpccw[i][j + 1][k + (t[n - j] >= tim)], tim);
tim = dpccw[i][j][k] + (l - x[n - j + 1] + x[i + 1]);
dpcw[i + 1][j][k + (t[i + 1] >= tim)] = min(dpcw[i + 1][j][k + (t[i + 1] >= tim)], tim);
}
}
int ans = 0;
for(int i = 0; i <= n; i ++) for(int j = 0; i + j <= n; j ++) for(int k = 0; k <= i + j; k ++){
if(min(dpcw[i][j][k], dpccw[i][j][k]) < inf)
ans = max(ans, k);
}
printf("%d\n", ans);
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... |