Submission #1284553

#TimeUsernameProblemLanguageResultExecution timeMemory
1284553thelegendary08Overtaking (IOI23_overtaking)C++17
0 / 100
2 ms340 KiB
#include "overtaking.h" #include<bits/stdc++.h> #define int long long #define f0r(i,n) for(int i = 0; i<n; i++) #define pb push_back #define mp make_pair #define vi vector<int> #define vvi vector<vi> #define mii map<int,int> #define pii pair<int,int> #define vpii vector<pii> #define FOR(i, k, n) for(int i = k; i<n; i++) #define vb vector<bool> #define vout(v) for(auto u : v)cout<<u<<' '; cout<<endl; #define ckmax(x, y) x = max(x,y) #define dout(x) cout<<x<<' '<<#x<<endl; #define dout2(a,b) cout<<a<<' '<<#a<<' '<<b<<' '<<#b<<endl using namespace std; int L, N, X, M; vi T, W, S; vvi rch, ex; //sorting station, reaching time void init(signed L, signed N, std::vector<long long> T, std::vector<signed> W, signed X, signed M, std::vector<signed> S) { ::L=L, ::N=N, ::X=X, ::M=M, ::T=T; ::W.resize(N); f0r(i,N)::W[i] = W[i]; ::S.resize(M); f0r(i,M)::S[i] = S[i]; rch.resize(M); f0r(i, M)rch[i].resize(N); ex.resize(M); f0r(i, M)ex[i].resize(N); f0r(i, N)ex[0][i] = T[i], rch[0][i] = T[i]; FOR(i, 1, M){ int mx = 0; vpii w; f0r(j, N)w.pb(mp(rch[i-1][j], j)); sort(w.begin(), w.end()); vi que; f0r(j, N)ex[i][j] = rch[i-1][j] + (S[i] - S[i-1]) * W[j]; f0r(j, N){ if(j != 0 && w[j].first != w[j-1].first){ while(!que.empty()){ int k = que.back(), d = w[k].second; mx = max(mx, ex[i][d]); que.pop_back(); } } rch[i][w[j].second] = max(mx, ex[i][w[j].second]); que.pb(j); } } // f0r(i, M){ // f0r(j, N)cout<<rch[i][j]<<' '; cout<<'\n'; // } return; } long long arrival_time(long long Y) { set<int>rel; f0r(i, N){ if(T[i] < Y && W[i] > X)rel.insert(i); } // vout(rel); int cur = Y; FOR(i, 1, M){ int tmp = cur + X * (S[i] - S[i-1]); int mx = tmp; vi w; for(auto u : rel){ if(ex[i][u] >= tmp){ // dout2(u, rch[i][u]); mx = max(mx, ex[i][u]); w.pb(u); } } for(auto u : w)rel.erase(u); // vout(rel); cur = mx; //dout(cur); } return cur; return 0; }
#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...