Submission #1063372

#TimeUsernameProblemLanguageResultExecution timeMemory
1063372De3b0oOvertaking (IOI23_overtaking)C++17
65 / 100
3563 ms49748 KiB
#include "overtaking.h" #include<bits/stdc++.h> #include<random> #define ll long long #define F first #define S second #define in insert #define pb push_back #define ppb pop_back() #define d3 ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define cans cout << ans << "\n"; #define yes cout << "Yes" << "\n"; #define no cout << "No" << "\n"; #define pll pair<ll,ll> #define lin cout << "\n"; #define sqr 340 #define mod 1000000007 #define mid ((l+r)/2) #define lc (2*x) #define rc (2*x+1) #define sq 547 using namespace std; ll n , t[1009] , w[1009] , x , m , s[1009]; ll a[1009][1009]; map<ll,vector<ll>> mp; vector<pll> et[1009]; ll lo; void init(int L, int N, std::vector<long long> T, std::vector<int> W, int X, int M, std::vector<int> S) { lo=L; n=N; m=M; x=X; for(int i = 0 ; n>i ; i++) { t[i]=T[i]; w[i]=W[i]; } for(int i = 0 ; m>i ; i++) s[i]=S[i]; for(int i = 0 ; n>i ; i++) { a[i][0]=t[i]; mp[t[i]].pb(i); } ll ps = 0; for(int j = 1 ; m>j ; j++) { ll me = 0; for(auto it : mp) { ll mee = 0; for(auto b : it.S) { ll e = it.F+w[b]*(s[j]-ps); mee=max(mee,e); a[b][j]=max(e,me); } me=max(me,mee); } mp.clear(); for(int i = 0 ; n>i ; i++) mp[a[i][j]].pb(i); ps=s[j]; } for(int j = 0 ; m-1>j ; j++) { for(int i = 0 ; n>i ; i++) et[j].pb({a[i][j],a[i][j+1]}); sort(et[j].begin(),et[j].end()); for(int i = 1 ; n>i ; i++) et[j][i].S=max(et[j][i].S,et[j][i-1].S); } } long long arrival_time(long long Y) { ll ans=Y; for(int j = 0 ; m-1>j ; j++) { ll l = 0 , r = n-1; ll xx = -1; while(l<=r) { if(et[j][mid].F>=ans) r=mid-1; else { xx=mid; l=mid+1; } } if(xx==-1) { ans+=(lo-s[j])*x; break; } ans=max(et[j][mid].S,ans+(s[j+1]-s[j])*x); } return ans; }
#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...