Submission #1283560

#TimeUsernameProblemLanguageResultExecution timeMemory
1283560thelegendary08Overtaking (IOI23_overtaking)C++17
0 / 100
1 ms340 KiB
#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;
using namespace std;
int L, N, X, M;
vi T, W, S;
vvi rch; //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); 
	f0r(i, N)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()); 
		f0r(j, N){
			ckmax(mx, w[j].first + W[w[j].second] * (S[i] - S[i-1])); rch[i][w[j].second] = mx; 
		}
	}
	// 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, mx; tmp = mx = cur + X * (S[i] - S[i-1]); vi w; 
		for(auto u : rel){
			if(rch[i][u] >= tmp){
				ckmax(mx, rch[i][u]); w.pb(u); 
			}
		}
		for(auto u : w)rel.erase(u); 
		cur = mx; //dout(cur); 
	}
    return cur;
    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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...