제출 #1231550

#제출 시각아이디문제언어결과실행 시간메모리
1231550Malix추월 (IOI23_overtaking)C++20
65 / 100
3594 ms48068 KiB
#include "overtaking.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<vi> vii; typedef pair<int,int> pi; typedef vector<pi> pii; typedef tuple<int,int,int> ti; typedef vector<ll> li; typedef vector<li> lii; #define REP(i,a,b) for(int i=a;i<b;i++) #define F first #define PB push_back #define LSOne(s) ((s)&(-s)) #define all(x) (x).begin(),(x).end() ll INF=1000000000000000010; int inf=1e9+10; ll M=1e9+7; int n,m; ll sp; vector<vector<pair<ll,ll>>> a; vi s; void init(int L, int N, std::vector<long long> T, std::vector<int> W, int X, int M, std::vector<int> S) { n=N;m=M;sp=(ll)X;s=S; a.resize(m-1); vector<vector<tuple<ll,int,int>>> b(m); REP(i,0,n)b[0].PB({T[i],W[i],i}); sort(all(b[0])); REP(i,1,m){ s[i]-=S[i-1]; ll mx=0; REP(j,0,n){ auto [x,z,y]=b[i-1][j]; ll tmp=x; x+=(ll)s[i]*(ll)W[y]; mx=max(mx,x); b[i].PB({mx,W[y],y}); a[i-1].PB({tmp,mx}); } sort(all(b[i])); } return; } long long arrival_time(long long Y) { REP(i,0,m-1){ auto it=upper_bound(all(a[i]),make_pair(Y,-1LL)); Y+=sp*s[i+1]; if(it!=a[i].begin()){ it--; Y=max(Y,it->second); } } 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...