➤ Problem Link : 538C. Tourist's Notes
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; #define ll long long int int main() { ll n,m,d,h,ans=0; cin>>n>>m; pair<ll,ll> arr[m]; for(ll i=0;i<m;i++) { cin>>d>>h; arr[i]=make_pair(d,h); ans=max(ans,h); } ans=max(ans,arr[0].second+arr[0].first-1); ans=max(ans,arr[m-1].second+n-arr[m-1].first); bool flag=0; for(ll i=0;i<m-1;i++) { if(abs(arr[i+1].second-arr[i].second) > arr[i+1].first-arr[i].first) { flag=1; break; } ans=max(ans,(arr[i+1].first-arr[i].first+arr[i+1].second+arr[i].second)/2); } if(flag) cout<<"IMPOSSIBLE"; else cout<<ans; }
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!!