#include "overtaking.h"
#include<bits/stdc++.h>
#define int long long
#define f0r(i,n) for(int i = 0; i<n; i++)
#define pb push_back
#define mp make_pair
#define vi vector<int>
#define vvi vector<vi>
#define mii map<int,int>
#define pii pair<int,int>
#define vpii vector<pii>
#define FOR(i, k, n) for(int i = k; i<n; i++)
#define vb vector<bool>
#define vout(v) for(auto u : v)cout<<u<<' '; cout<<endl;
#define ckmax(x, y) x = max(x,y)
#define dout(x) cout<<x<<' '<<#x<<endl;
#define dout2(a,b) cout<<a<<' '<<#a<<' '<<b<<' '<<#b<<endl
using namespace std;
int L, N, X, M;
vi T, W, S;
vvi rch, ex; //sorting station, reaching time
void init(signed L, signed N, std::vector<long long> T, std::vector<signed> W, signed X, signed M, std::vector<signed> S)
{
::L=L, ::N=N, ::X=X, ::M=M, ::T=T;
::W.resize(N); f0r(i,N)::W[i] = W[i];
::S.resize(M); f0r(i,M)::S[i] = S[i];
rch.resize(M); f0r(i, M)rch[i].resize(N);
ex.resize(M); f0r(i, M)ex[i].resize(N);
f0r(i, N)ex[0][i] = T[i], rch[0][i] = T[i];
FOR(i, 1, M){
int mx = 0; vpii w; f0r(j, N)w.pb(mp(rch[i-1][j], j)); sort(w.begin(), w.end()); vi que;
f0r(j, N)ex[i][j] = rch[i-1][j] + (S[i] - S[i-1]) * W[j];
f0r(j, N){
if(j != 0 && w[j].first != w[j-1].first){
while(!que.empty()){
int k = que.back(), d = w[k].second; mx = max(mx, ex[i][d]); que.pop_back();
}
}
rch[i][w[j].second] = max(mx, ex[i][w[j].second]); que.pb(j);
}
}
// f0r(i, M){
// f0r(j, N)cout<<rch[i][j]<<' '; cout<<'\n';
// }
return;
}
long long arrival_time(long long Y)
{
set<int>rel;
f0r(i, N){
if(T[i] < Y && W[i] > X)rel.insert(i);
}
// vout(rel);
int cur = Y;
FOR(i, 1, M){
int tmp = cur + X * (S[i] - S[i-1]); int mx = tmp; vi w;
for(auto u : rel){
if(ex[i][u] >= tmp){
// dout2(u, rch[i][u]);
mx = max(mx, ex[i][u]); w.pb(u);
}
}
for(auto u : w)rel.erase(u);
// vout(rel);
cur = mx; //dout(cur);
}
return cur;
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... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |