Submission #1008623

#TimeUsernameProblemLanguageResultExecution timeMemory
1008623aaaaaarrozOvertaking (IOI23_overtaking)C++17
0 / 100
2 ms348 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int l,n,x,m;
vector<ll>t; 
vector<int>w,s;
void init(int L,int N,vector<ll>T,vector<int>W,int X,int M,vector<int>S){
	l=L;
	n=N;
	t=T;
	w=W;
	x=X;
	m=M;
	s=S;
}
ll arrival_time(ll arrival){
	vector<ll>ex(n+1);
	vector<pair<ll,ll>>time(n+1);
	for(int i=0;i<n;i++){
		time[i]={t[i],i};
		time[n]={arrival,n};
	}
	for(int i=1;i<m;i++){
		for(int j=0;j<n;j++){
			ex[j]=time[j].first+(w[j]*(s[i]-s[i-1]));
		}
		ex[n]=(time[n].first+(x*(s[i]-s[i-1])));
		map<ll,vector<ll>>nv;
		for(int j=0;j<=n;j++){
			nv[time[j].first].push_back(j);
		}
		ll mx=0;
		auto newtime=time;
		for(auto [key, val]:nv){
			for(auto v:val){
				newtime[v]={v,max(mx,ex[v])};
			}
			for(auto v:val){
				mx=max(mx,ex[v]);
			}
		}
		sort(newtime.begin(),newtime.end());
		for(int j=0;j<=n;j++){
			time[j]={newtime[j].second,newtime[j].first};
		}
	}
	return time[n].first;
}
#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...