Submission #1246834

#TimeUsernameProblemLanguageResultExecution timeMemory
1246834stanirinaParkovi (COCI22_parkovi)C++20
0 / 110
118 ms1948 KiB
#include <bits/stdc++.h> #define int long long using namespace std; int n,k; vector<int> w; bool proveri(int dist){ int cnt=0ll; int i=0ll; int sum=0ll; while(i<n-1ll){ if(sum+w[i]>dist){ sum=0ll; cnt++; while(sum<dist && i<n-1ll){ sum+=w[i]; if(sum>dist)break; i++; } sum=0ll; i++; } else{ i++; sum+=w[i]; } } if(cnt>k)return false; return true; } int32_t main() { cin>>n>>k; w.resize(n-1); for(int i=0;i<n-1;i++){ int a,b; cin>>a>>b; cin>>w[i]; } int maxedge=0ll; for(int i=0;i<n-1;i++)maxedge=max(maxedge,w[i]); int l=0ll; int r=100000000000000000ll; while(l<=r){ int mid=l+(r-l)/2ll; //cout<<mid<<endl; if(proveri(mid))r=mid-1ll; else l=mid+1ll; } cout<<l<<endl; int cnt=0ll; int i=0ll; int sum=0ll; while(i<n-1ll){ if(sum+w[i]>l){ cout<<i+1<<' '; sum=0ll; cnt++; while(sum<l && i<n-1ll){ sum+=w[i]; if(sum>l)break; i++; } sum=0ll; i++; } else{ i++; sum+=w[i]; } } 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...