580B. Kefa and Company - Codeforces Solution C++

  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!!