#include "overtaking.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1001;
ll n, t[N], w[N], m, s[N];
ll z[N];
bool comp(ll a, ll b){
    return z[a]<z[b];
}
void init(int L, int N, std::vector<long long> T, std::vector<int> W, int X, int M, std::vector<int> S){
    n=N;
    for(ll i=0; i<n; i++){
        t[i]=T[i];
        w[i]=W[i];
    }
    w[n]=X;
    m=M;
    for(ll i=0; i<m; i++){
        s[i]=S[i];
    }
    return;
}
long long arrival_time(long long Y){
    t[n]=Y;
    ll x[n+1][m], e[n+1][m], idx[n+1];
    for(ll i=0; i<=n; i++){
        x[i][0]=t[i];
        idx[i]=i;
    }
    for(ll j=1; j<m; j++){
        for(ll i=0; i<=n; i++){
            e[i][j]=x[i][j-1]+w[i]*(s[j]-s[j-1]);
            z[i]=x[i][j-1];
        }
        sort(idx,idx+n+1,comp);
        ll c=0, ans=0;
        for(ll i=0; i<=n; i++){
            if(i>0 && x[idx[i]][j-1]>x[idx[i-1]][j-1]) ans=max(ans,c);
            x[idx[i]][j]=max(e[idx[i]][j],ans);
            c=max(c,e[idx[i]][j]);
        }
    }
    return x[n][m-1];
}
| # | 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... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |