➤ Problem Link : 580B. Kefa and Company
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; #define ll long long int bool func(ll val,pair<ll,ll> arr[],int n,int d) { ll sum=0; queue<pair<ll,ll> > q; pair<ll,ll> fr; for(ll i=0;i<n;i++) { fr=q.front(); if(arr[i].first<d+fr.first) { q.push(arr[i]); sum+=arr[i].second; if(sum>=val) return 1; } else { while(!q.empty() && arr[i].first>=d+q.front().first) { sum-=q.front().second; q.pop(); } q.push(arr[i]); sum+=arr[i].second; if(sum>=val) return 1; } } return 0; } int main() { ll n,d,m,s; cin>>n>>d; pair<ll,ll> arr[n]; for(int i=0;i<n;i++) { cin>>m>>s; arr[i]=make_pair(m,s); } sort(arr,arr+n); ll low=0; ll high=pow(10,15); ll mid; while(low<high) { mid=low+(high-low+1)/2; if(func(mid,arr,n,d)) low=mid; else high=mid-1; } cout<<high; }
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!!