Submission #924472

#TimeUsernameProblemLanguageResultExecution timeMemory
924472Faisal_SaqibToll (BOI17_toll)C++17
0 / 100
561 ms524288 KiB
#include <iostream> #include <vector> using namespace std; const int N=5e4+2; vector<pair<int,int>> ma[N],query[N]; vector<int> MinDist[N]; const int O=1e4+2; int ans[O]; int main() { cin.tie(0); cout.tie(0); ios::sync_with_stdio(0); int k,n,m,q; cin>>k>>n>>m>>q; // q<=1e4 for(int j=0;j<m;j++) { int a,b,t; cin>>a>>b>>t; ma[a].push_back({b,t}); } for(int lp=0;lp<q;lp++) { int x,y; cin>>x>>y; query[x].push_back({y,lp}); } for(int i=n-1;i>=0;i--) { MinDist[i].push_back(0); for(int j=i+1;j<n;j++) MinDist[i].push_back(1e9); if((i/k)!=((i+1)/k)) for(int j=i+k+1;j<(i+k+k+1) and j<n;j++) MinDist[j].clear(); for(auto [l,w]:ma[i]) { for(int j=max(l,(i+1));j<n;j++) MinDist[i][j-i]=min(MinDist[i][j-i],MinDist[l][j-l]+w); } ma[i].clear(); for(auto [j,ind]:query[i]) { if(j<i) { ans[ind]=-1; } else { if(MinDist[i][j-i]==1e9) { ans[ind]=-1; } else { ans[ind]=MinDist[i][j-i]; } } } query[i].clear(); } for(int j=0;j<q;j++) { cout<<ans[j]<<'\n'; } 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...