Submission #1173561

#TimeUsernameProblemLanguageResultExecution timeMemory
1173561chikien2009Collecting Stamps 3 (JOI20_ho_t3)C++20
100 / 100
68 ms63304 KiB
#include <bits/stdc++.h> using namespace std; void setup() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); } int n, l, a, b, c[4], x[200], t[200], f[200][200][201][2], res = 0; int main() { setup(); cin >> n >> l; for (int i = 0; i < n; ++i) { cin >> x[i]; } for (int i = 0; i < n; ++i) { cin >> t[i]; } for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { for (int k = 0; k <= n; ++k) { for (int h = 0; h < 2; ++h) { f[i][j][k][h] = 1e9 + 1; } } } } for (int d = 0; d < n; ++d) { for (int i = 0, j; i < n; ++i) { j = (i + d) % n; if (i == j) { a = min(x[i], l - x[i]); f[i][j][0][0] = f[i][j][0][1] = a; if (a <= t[i]) { f[i][j][1][0] = f[i][j][1][1] = a; } continue; } for (int k = 0; k <= n; ++k) { a = (i + 1) % n; b = (j - 1 + n) % n; c[0] = min(abs(x[i] - x[a]), l - abs(x[i] - x[a])); c[1] = min(abs(x[i] - x[j]), l - abs(x[i] - x[j])); c[2] = min(abs(x[j] - x[b]), l - abs(x[j] - x[b])); f[i][j][k][0] = min(f[i][j][k][0], c[0] + f[a][j][k][0]); f[i][j][k][0] = min(f[i][j][k][0], c[1] + f[a][j][k][1]); f[i][j][k][1] = min(f[i][j][k][1], c[2] + f[i][b][k][1]); f[i][j][k][1] = min(f[i][j][k][1], c[1] + f[i][b][k][0]); if (k == 0) { continue; } if (f[a][j][k - 1][0] + c[0] <= t[i]) { f[i][j][k][0] = min(f[i][j][k][0], f[a][j][k - 1][0] + c[0]); } if (f[a][j][k - 1][1] + c[1] <= t[i]) { f[i][j][k][0] = min(f[i][j][k][0], f[a][j][k - 1][1] + c[1]); } if (f[i][b][k - 1][1] + c[2] <= t[j]) { f[i][j][k][1] = min(f[i][j][k][1], f[i][b][k - 1][1] + c[2]); } if (f[i][b][k - 1][0] + c[1] <= t[j]) { f[i][j][k][1] = min(f[i][j][k][1], f[i][b][k - 1][0] + c[1]); } } } } for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { for (int k = 0; k <= n; ++k) { for (int h = 0; h < 2; ++h) { if (f[i][j][k][h] <= 1e9) { res = max(res, k); } } } } } cout << res; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...