求助 c++ 84分 第二个和第八个测试点没过
  • 板块P1102 A-B 数对
  • 楼主SUT_lb
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/7/18 22:39
  • 上次更新2023/11/3 09:00:07
查看原帖
求助 c++ 84分 第二个和第八个测试点没过
936054
SUT_lb楼主2023/7/18 22:39
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 200010,INF = 0x3f3f3f3f;

typedef long long LL;

int n,m;
LL q[N]; 

void solve()
{ 
	cin >> n >> m;
	for(int i = 0;i < n;i ++ ) cin >> q[i];
	sort(q,q + n);
	
	LL ans = 0;
	for(int i = 0;i < n;i ++)
	{
		LL a = q[i];
		LL b = a - m;
		
		int l = 0,r = n - 1;
		while(l < r)
		{
			int mid = l + r >> 1;
			if(q[mid] >= b) r = mid;
			else l = mid + 1;	
		} 
			
//		cout << l << endl;
				
		int ll = 0,rr = n - 1;
		while(ll < rr)
		{
			int mid = ll + rr + 1 >> 1;
			if(q[mid] <= b) ll = mid;
			else rr = mid - 1;
		}
		
//		cout << ll << endl;
		
		
		if(!ll && !l) ans += 0;
		else ans += ll - l + 1;
	}
	
	cout << ans << endl;
	
}


int main()
{
	solve();
	
	return 0; 
}
2023/7/18 22:39
加载中...