제출 #1280390

#제출 시각아이디문제언어결과실행 시간메모리
1280390Luvidi추월 (IOI23_overtaking)C++20
65 / 100
3595 ms17976 KiB
#include "overtaking.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define pll pair<ll,ll> #define fs first #define sc second #define pb push_back int l,n,x,m; vector<ll> t,s,w; vector<pll> a[1000]; void init(int L, int N, std::vector<long long> T, std::vector<int> W, int X, int M, std::vector<int> S) { l=L,n=N,t=T,x=X,m=M; for(int i:S)s.pb(i); for(int i:W)w.pb(i); pll c[n]; for(int i=0;i<n;i++)c[i]={t[i],i}; for(int i=0;i<m-1;i++){ sort(c,c+n,[&](pll p1,pll p2){return make_pair(p1.fs,w[p1.sc])<make_pair(p2.fs,w[p2.sc]);}); for(ll j=0,z=0;j<n;j++){ z=max(z,c[j].fs+(s[i+1]-s[i])*w[c[j].sc]); a[i].pb({c[j].fs,z}); c[j].fs=z; } } return; } long long arrival_time(long long y) { ll z=y; for(int i=0;i<m-1;i++){ ll p=z+(s[i+1]-s[i])*x; pll tt={z,0}; int j=lower_bound(a[i].begin(),a[i].end(),tt)-1-a[i].begin(); if(j==-1)z=p; else z=max(p,a[i][j].sc); } return z; }
#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...