Submission #1170656

#TimeUsernameProblemLanguageResultExecution timeMemory
1170656kimTrain (APIO24_train)C++20
0 / 100
30 ms6980 KiB
#include "train.h" #include<bits/stdc++.h> using namespace std; using ll=long long; using pii=pair<int,int>; #define f first #define s second #define eb emplace_back #define sz(x) (int)x.size() #define add(x,y) ((x+y)%md) #define Add(x,y) (x=add(x,y)) #define mul(x,y) ((x*y)%md) #define Mul(x,y) (x=mul(x,y)) template<class T> T chmn(T &x,T y){ return x=min(x,y); } template<class T> T chmx(T &x,T y){ return x=max(x,y); } const int inf=1e9; const ll linf=1e18; const ll md=1e9+7; vector<pair<ll,int>> dp[100005]; int R[100005]; vector<int> Lcmp; long long solve(int N, int M, int W, std::vector<int> T, std::vector<int> X, std::vector<int> Y, std::vector<int> A, std::vector<int> B, std::vector<int> C, std::vector<int> L_, std::vector<int> R_) { vector<int> v(W); dp[0].eb(0,-1); v.resize(N); iota(v.begin(),v.end(),0); sort(v.begin(),v.end(),[&](const int &l,const int &r){ return B[l]==B[r] ? A[l]<A[r] : B[l]<B[r]; }); for(auto &i:v){ int l=0,r=sz(dp[X[i]])-1; ll cost=linf; for(int j=l;j<=r;++j){ if(dp[X[i]][j].s>A[i]) continue; ll cnt=0; for(int k=0;k<W;++k) if(L_[k]>dp[X[i]][j].s && R_[k]<A[i]) ++cnt; chmn(cost, dp[X[i]][j].f+(ll)T[X[i]]*cnt); } if(cost<linf){ cost+=C[i]; dp[Y[i]].eb(cost,B[i]); } } if(dp[N-1].empty()) return -1; ll res=1e18; for(auto &[c,b]:dp[N-1]){ ll cnt=0; for(int k=0;k<W;++k) if(L_[k]>b) ++cnt; chmn(res,c+(ll)T[N-1]*cnt); } return res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...