Submission #1233831

#TimeUsernameProblemLanguageResultExecution timeMemory
1233831Muhammad_AneeqOvertaking (IOI23_overtaking)C++17
65 / 100
3576 ms47912 KiB
#include "overtaking.h" #include <vector> #include <algorithm> #include <iostream> using namespace std; #define ll long long int const NM=1e3+10; long long arr[NM][NM]={}; vector<ll>tms[NM]={},pre[NM]={}; vector<int>s; int n,m; int x; void init(int L, int N, vector<long long> T, vector<int> W, int X, int M, vector<int> S) { x=X; s=S; n=N,m=M; for (int i=0;i<N;i++) arr[i][0]=T[i]; for (int i=1;i<M;i++) { vector<pair<ll,int>>tm; for (int j=0;j<n;j++) tm.push_back({arr[j][i-1],j}); pre[i-1].push_back(0); sort(begin(tm),end(tm)); ll mx=0; for (int j=0;j<n;j++) { int k=j; vector<int>ind; while (k<n&&tm[k].first==tm[j].first) { tms[i-1].push_back(tm[k].first); ind.push_back(tm[k].second); k++; } j=k-1; for (auto l:ind) arr[l][i]=max(arr[l][i-1]+1ll*(S[i]-S[i-1])*W[l],mx); for (auto l:ind) mx=max(mx,arr[l][i]); for (auto l:ind) pre[i-1].push_back(mx); } } return; } long long arrival_time(long long Y) { ll pr=Y; for (int i=0;i+1<m;i++) { int z=lower_bound(begin(tms[i]),end(tms[i]),pr)-begin(tms[i]); pr=max(pr+1ll*(s[i+1]-s[i])*x,pre[i][z]); } return pr; }
#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...