203902026-01-06 17:30:30algoproTV szolgáltatókcpp17Elfogadva 40/4087ms5196 KiB
// UUID: 116b840a-411e-4a2f-897c-19ccc95b5fa4
#include <bits/stdc++.h>
using namespace std;
#define int long long
bool r1(array<int, 2> a, array<int, 2> b)
{
	return (a[1]<b[1] || (a[1]==b[1] && a[0]<b[0]));
}
signed main() {
	ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int n,k; cin>>n>>k;
	vector<array<int, 2>> v(n+2);
	vector<int> lehet;
	for(int i=1; i<=n; i++)
	{
		cin>>v[i][0]>>v[i][1];
		lehet.push_back(v[i][0]);
		lehet.push_back(v[i][1]-k+1);
	}
	sort(lehet.begin(),lehet.end());
	lehet.erase(unique(lehet.begin(),lehet.end()),lehet.end());
	int m=lehet.size();
	vector<int> ert(m);
	sort(v.begin()+1,v.end()-1,r1);
	int tart=1,ossz=0;
	for(int i=0; i<m; i++)
	{
		int jobb=lehet[i]+k-1;
		while(tart<=n && v[tart][1]<=jobb)
		{
			ossz+=v[tart][1];
			tart++;
		}
		ert[i]=(tart-1)*jobb-ossz;
	}
	sort(v.begin()+1,v.end()-1);
	tart=n,ossz=0;
	for(int i=m-1; i>=0; i--)
	{
		int bal=lehet[i];
		while(tart>0 && v[tart][0]>=bal)
		{
			ossz+=v[tart][0];
			tart--;
		}
		ert[i]+=ossz-(n-tart)*bal;
	}
	int ans=1e18;
	for(int i=0; i<m; i++)
		ans=min(ans,ert[i]);
	cout<<ans;



}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base40/40
1Elfogadva0/01ms508 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva1/11ms316 KiB
4Elfogadva1/11ms316 KiB
5Elfogadva1/12ms364 KiB
6Elfogadva1/12ms316 KiB
7Elfogadva2/22ms316 KiB
8Elfogadva2/22ms316 KiB
9Elfogadva2/22ms316 KiB
10Elfogadva2/22ms316 KiB
11Elfogadva2/239ms2788 KiB
12Elfogadva2/239ms2732 KiB
13Elfogadva2/239ms2872 KiB
14Elfogadva2/239ms2732 KiB
15Elfogadva2/281ms5100 KiB
16Elfogadva2/282ms4876 KiB
17Elfogadva2/243ms2732 KiB
18Elfogadva2/243ms2924 KiB
19Elfogadva2/243ms2740 KiB
20Elfogadva2/243ms2732 KiB
21Elfogadva1/143ms2696 KiB
22Elfogadva1/143ms2916 KiB
23Elfogadva1/187ms5028 KiB
24Elfogadva1/187ms5172 KiB
25Elfogadva1/186ms5196 KiB
26Elfogadva1/186ms5112 KiB
27Elfogadva1/187ms5028 KiB
28Elfogadva1/187ms5032 KiB