Submission #1233924

#TimeUsernameProblemLanguageResultExecution timeMemory
1233924MuhammadSaramOvertaking (IOI23_overtaking)C++20
39 / 100
53 ms24136 KiB
#include "overtaking.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define all(v) v.begin(), v.end() const int M = 1000; ll pre[M][M],x; vector<pair<ll,int>> v[M]; vector<int> s; int m; void init(int l, int n, vector<long long> T, vector<int> w, int X, int m1, vector<int> S) { x=X,m=m1,s=S; for (int i=0;i<n;i++) { if (w[i]<=x) continue; v[0].push_back({T[i],w[i]}); } for (int i=0;i+1<m;i++) { sort(all(v[i])); ll mx=0,mx1=0; for (int j=0;j<v[i].size();j++) { ll t=v[i][j].first,w=v[i][j].second; if (j && v[i][j-1].second!=v[i][j].second) mx=mx1; mx1=max(mx1,t+w*(s[i+1]-s[i])); v[i+1].push_back({max(mx,t+w*(s[i+1]-s[i])),w}); pre[i][j+1]=v[i+1].back().first; } } return; } long long arrival_time(long long y) { for (int i=0;i+1<m;i++) { int id=lower_bound(all(v[i]),make_pair(y,0))-begin(v[i]); y=max(pre[i][id],y+x*(s[i+1]-s[i])); } return y; }
#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...