➤ Problem Link : 729C. Road to Cinema
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; #define ll long long int vector< pair<ll,ll> > arr; bool func(ll v, ll pos[], ll k,ll t) { ll d,x,curr=0; ll time=0; for(ll i=0;i<k;i++) { d=pos[i]-curr; curr=pos[i]; if(d>v) return 0; x=min(d,v-d); time+=x+2*(d-x); if(time>t) return 0; } return 1; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); ll n,k,s,t; cin>>n>>k>>s>>t; ll minN[n]; ll c,v; for(ll i=1;i<=n;i++) { cin>>c>>v; arr.push_back(make_pair(v,c)); } ll pos[k+1]; for(ll i=0;i<k;i++) cin>>pos[i]; pos[k]=s; sort(pos,pos+k+1); sort(arr.begin(),arr.end()); minN[n-1]=arr[n-1].second; for(ll i=n-2;i>=0;i--) minN[i]=min(arr[i].second,minN[i+1]); ll low=0,high=arr[n-1].first+5,mid; while(low<high) { mid=low+(high-low)/2; if(func(mid,pos,k+1,t)) high=mid; else low=mid+1; } ll ans=low; low=0,high=arr.size()-1; while(low<high) { mid=low+(high-low)/2; if(arr[mid].first>=ans) high=mid; else low=mid+1; } if(arr[low].first < ans) cout<<"-1"; else cout<<minN[low]; }
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!