답안 #879636

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
879636 2023-11-27T18:59:45 Z serifefedartar Collecting Stamps 3 (JOI20_ho_t3) C++17
0 / 100
44 ms 135296 KB
#include <bits/stdc++.h>
using namespace std;

#define fast ios::sync_with_stdio(0);cin.tie(0);
#define s second
#define f first
typedef long long ll;
const ll MOD = 1e9 + 9;
const ll LOGN = 21;
const ll MAXN = 1e6 + 100;
#define int long long

vector<int> X, T;
int dp[205][205][205][2], N, L;
int find_dist(int i, int j) {
	if (i != N + 1 && j != 0)
		return min(abs(X[j] - X[i]), L - abs(X[j] - X[i]));
	if (i == N + 1)
		return min(X[j], L - X[j]);
	if (j == 0)
		return min(X[i], L - X[i]);
}

signed main() {
	fast
	cin >> N >> L;

	X = vector<int>(N+1);
	T = vector<int>(N+1);
	for (int i = 1; i <= N; i++)
		cin >> X[i];
	for (int i = 1; i <= N; i++)
		cin >> T[i];

	for (int i = 0; i < 205; i++) {
		for (int j = 0; j < 205; j++) {
			for (int k = 0; k < 205; k++)
				dp[i][j][k][0] = dp[i][j][k][1] = 1e15;
		}
	}
	
	dp[0][0][0][0] = dp[0][0][0][1] = 0;

	int ans = 0;
	for (int l = 0; l <= N; l++) {
		for (int r = 0; r <= N; r++) {
			if (l + r == N)
				continue;
			for (int cnt = 0; cnt <= N; cnt++) {
				// solda bulunuyor
				int x = dp[cnt][l][r][0] + find_dist(N - l + 1, N - l);
				if (x < dp[cnt + (x <= T[N-l])][l+1][r][0]) {
					dp[cnt + (x <= T[N-l])][l+1][r][0] = x;
					ans = max(ans, cnt + (x <= T[N-l]));
				}

				x = dp[cnt][l][r][0] + find_dist(N - l + 1, r + 1);
				if (x < dp[cnt + (x <= T[r+1])][l][r+1][1]) {
					dp[cnt + (x <= T[r+1])][l][r+1][1] = x;
					ans = max(ans, cnt + (x <= T[r+1]));
				}

				// sağda bulunuyor
				x = dp[cnt][l][r][1] + find_dist(N - l, r);
				if (x < dp[cnt + (x <= T[N-l])][l+1][r][0]) {
					dp[cnt + (x <= T[N-l])][l+1][r][0] = x;
					ans = max(ans, cnt + (x <= T[N-l]));
				}

				x = dp[cnt][l][r][1] + find_dist(r, r + 1);
				if (x < dp[cnt + (x <= T[r+1])][l][r+1][1]) {
					dp[cnt + (x <= T[r+1])][l][r+1][1] = x;
					ans = max(ans, cnt + (x <= T[r+1]));
				}
			}
		}
	}

	cout << ans << "\n";
}

Compilation message

ho_t3.cpp: In function 'long long int find_dist(long long int, long long int)':
ho_t3.cpp:22:1: warning: control reaches end of non-void function [-Wreturn-type]
   22 | }
      | ^
# 결과 실행 시간 메모리 Grader output
1 Correct 43 ms 135248 KB Output is correct
2 Correct 38 ms 135148 KB Output is correct
3 Correct 41 ms 135104 KB Output is correct
4 Correct 36 ms 135184 KB Output is correct
5 Correct 35 ms 135248 KB Output is correct
6 Correct 36 ms 135248 KB Output is correct
7 Correct 37 ms 135076 KB Output is correct
8 Correct 44 ms 135112 KB Output is correct
9 Correct 36 ms 135260 KB Output is correct
10 Correct 35 ms 135268 KB Output is correct
11 Correct 35 ms 135140 KB Output is correct
12 Correct 41 ms 135252 KB Output is correct
13 Correct 36 ms 135092 KB Output is correct
14 Correct 36 ms 135296 KB Output is correct
15 Correct 36 ms 135256 KB Output is correct
16 Incorrect 36 ms 135252 KB Output isn't correct
17 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 43 ms 135248 KB Output is correct
2 Correct 38 ms 135148 KB Output is correct
3 Correct 41 ms 135104 KB Output is correct
4 Correct 36 ms 135184 KB Output is correct
5 Correct 35 ms 135248 KB Output is correct
6 Correct 36 ms 135248 KB Output is correct
7 Correct 37 ms 135076 KB Output is correct
8 Correct 44 ms 135112 KB Output is correct
9 Correct 36 ms 135260 KB Output is correct
10 Correct 35 ms 135268 KB Output is correct
11 Correct 35 ms 135140 KB Output is correct
12 Correct 41 ms 135252 KB Output is correct
13 Correct 36 ms 135092 KB Output is correct
14 Correct 36 ms 135296 KB Output is correct
15 Correct 36 ms 135256 KB Output is correct
16 Incorrect 36 ms 135252 KB Output isn't correct
17 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 43 ms 135248 KB Output is correct
2 Correct 38 ms 135148 KB Output is correct
3 Correct 41 ms 135104 KB Output is correct
4 Correct 36 ms 135184 KB Output is correct
5 Correct 35 ms 135248 KB Output is correct
6 Correct 36 ms 135248 KB Output is correct
7 Correct 37 ms 135076 KB Output is correct
8 Correct 44 ms 135112 KB Output is correct
9 Correct 36 ms 135260 KB Output is correct
10 Correct 35 ms 135268 KB Output is correct
11 Correct 35 ms 135140 KB Output is correct
12 Correct 41 ms 135252 KB Output is correct
13 Correct 36 ms 135092 KB Output is correct
14 Correct 36 ms 135296 KB Output is correct
15 Correct 36 ms 135256 KB Output is correct
16 Incorrect 36 ms 135252 KB Output isn't correct
17 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 43 ms 135248 KB Output is correct
2 Correct 38 ms 135148 KB Output is correct
3 Correct 41 ms 135104 KB Output is correct
4 Correct 36 ms 135184 KB Output is correct
5 Correct 35 ms 135248 KB Output is correct
6 Correct 36 ms 135248 KB Output is correct
7 Correct 37 ms 135076 KB Output is correct
8 Correct 44 ms 135112 KB Output is correct
9 Correct 36 ms 135260 KB Output is correct
10 Correct 35 ms 135268 KB Output is correct
11 Correct 35 ms 135140 KB Output is correct
12 Correct 41 ms 135252 KB Output is correct
13 Correct 36 ms 135092 KB Output is correct
14 Correct 36 ms 135296 KB Output is correct
15 Correct 36 ms 135256 KB Output is correct
16 Incorrect 36 ms 135252 KB Output isn't correct
17 Halted 0 ms 0 KB -