➤ Problem Link : 1119D. Frets On Fire
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; #define ll long long int int main() { ll n,s; cin>>n; ll arr[100002]; vector<ll> diff; ll p; long double cum[100002]; for(ll i=0;i<n;i++) cin>>arr[i]; sort(arr,arr+n); if(n!=1) { for(ll i=1;i<n;i++) diff.push_back(arr[i]-arr[i-1]); sort(diff.begin(),diff.end()); p=diff.size(); cum[0]=diff[0]; for(ll i=1;i<p;i++) cum[i]=diff[i]+cum[i-1]; } ll q,l,r; cin>>q; ll low,mid,high; while(q--) { cin>>l>>r; ll ans=r-l+1; if(n==1) { cout<<ans<< " "; continue; } low=0,high=p-1; while(low<high) { mid=low+(high-low)/2; if(diff[mid]>=ans) high=mid; else low=mid+1; } if(diff[low] < ans) ans+=cum[p-1]; else { if(low!=0) ans+=ans*(p-low) + cum[low-1]; else ans+=ans*(p-low); } 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!!