Submission #1220774

#TimeUsernameProblemLanguageResultExecution timeMemory
1220774abdelhakimOvertaking (IOI23_overtaking)C++20
0 / 100
0 ms328 KiB
#include "overtaking.h" #include <bits/stdc++.h> #define ll long long #define dbg(x) cerr << #x << ' ' << x << endl; using namespace std; ll l,n; vector<ll> t; vector<int> w; ll x, m; vector<int> s; vector<vector<ll>> p; vector<vector<vector<ll>>> v; void init(int L, int N, std::vector<long long> T, std::vector<int> W, int X, int M, std::vector<int> S) { p.assign(M,vector<ll>(N)); v.resize(M); l=L; n=N; t=T; w=W; x=X; m=M; s=S; for (int i=0;i<n;i++) { vector<ll> tr={t[i],(ll)((s[1]-s[0])*W[i]),(ll)i}; v[0].push_back(tr); } sort(v[0].begin(),v[0].end()); for (int i=0;i<n;i++) { if(i==0) p[0][i]=v[0][i][1]; else p[0][i]=max(v[0][i][1],p[0][i-1]); } for (int i=0;i<m-1;i++) { sort(v[i].begin(), v[i].end()); ll lst=0; for (int j=0;j<v[i].size();j++) { ll e=(s[i+1]-s[i])*w[v[i][j].back()]+v[i][j][0]; v[i][j][1]=e; if(j!=0 && v[i][j][0]!=v[i][j-1][0]) { lst=p[i][j-1]; } v[i+1].push_back({max(e,lst),-1,v[i][j].back()}); p[i][j]=max(e,p[i][j-1+(j==0)]); } } return; } long long arrival_time(long long Y) { ll curt=Y; ll cur2=t[0]; for (int i=0;i<m-1;i++) { ll e=curt+(s[i+1]-s[i])*x; ll e2=cur2+(s[i+1]-s[i])*w[0]; if(curt<cur2)e2=max(e2,e); else e=max(e,e2); // ll ind=lower_bound(v[i].begin(),v[i].end(),vector<ll>({curt,0,0}))-v[i].begin()-1; // if(ind>=0) // { // e=max(e,p[i][ind]); // } curt=e; cur2=e2; } return curt; }
#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...