Submission #596928

#TimeUsernameProblemLanguageResultExecution timeMemory
596928ioiCollecting Stamps 3 (JOI20_ho_t3)C++14
15 / 100
67 ms97148 KiB
#include<bits/stdc++.h>

using namespace std;

#define debug(x) cout << '[' << #x << " is: " << x << "] " << endl;
#define inF freopen("cardgame.in" , "r" , stdin);
#define outF freopen("cardgame.out" , "w" , stdout);
#define imod(a , n) (a % n + n ) % n
#define sor(v) sort(v.begin() , v.end());
#define print(v) for(auto f : v ) cout << f << " " ;
#define rsor(v) sort(v.rbegin() , v.rend());
#define rev(v) reverse(v.begin() , v.end());
#define scan(v)for(auto &it : v)cin >> it ;
#define ll long long

#define logar(x , y) log(x) / log(y)
#define __sum(n) n * (n + 1) / 2
#define __lcm(a , b) a / __gcd(a , b) * b
#define pii pair<int , int >
#define fastio ios_base::sync_with_stdio(false);cin.tie(0);

//#define int ll

const int N =  202 ,  M = N * 4  , MX = 2e4 + 40;
const ll MOD = 998244353  , oo = 1e9 + 9 , OO = 1e18 , mod = MOD ;
const double pi = acos(-1) , eps = 1e-17 ;

int di[] = {1 , -1 , 0 , 0};
int dj[] = {0 , 0 , 1 , -1};

int n , l ;
int x[N] , t[N];

int dp[N][N][N][3];

int calc(int i , int j , int tim , int now){

  //  cout << i << " " << j << " " << tim << " " << now << endl ;
    if(tim > 200)return 0 ;
    if(i > j)return 0 ;


    int &ret = dp[i][j][tim][now];
    if(~ret)
        return ret ;



    if(now == 0){

        ret = calc(i , j - 1 , tim + x[j + 1] - x[j] , 0) + (tim + x[j + 1] - x[j] <= t[j]);

        ret = max(ret , calc(i + 1 , j , tim + l - x[j + 1] + x[i] , 2) + (tim + l - x[j + 1] + x[i] <= t[i]));

    }
    else if(now == 1){

        ret = calc(i + 1 , j ,x[i] , 2) + (x[i] <= t[i]);
        ret = max(ret , calc(i , j - 1 , l - x[j] , 0) + (l - x[j] <= t[j]));


    }
    else {

        ret = calc(i + 1 , j , tim + x[i] - x[i - 1] , 2) + (tim + x[i] - x[i - 1] <= t[i]);
        ret = max(ret , calc(i , j - 1 , tim + x[i - 1] + l - x[j] , 0) + (tim + x[i - 1] + l - x[j] <= t[j]));

    }

    return ret ;


}


int32_t main()
{
    // inF;
   // inF;outF;
    fastio;

    //Welcome back without <TAWJIHI>


    cin >> n >> l ;

    memset(dp , -1 , sizeof dp);


    for(int i = 0 ; i < n ; i ++)cin >> x[i];

    for(int i = 0 ; i < n ; i ++)cin >> t[i];


    cout << calc(0 , n - 1 , 0 , 1);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...