#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 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... |