92pts, #3 TLE ;二分写的 , 代码求调
查看原帖
92pts, #3 TLE ;二分写的 , 代码求调
774204
A_chicken_boy楼主2023/8/31 16:39
#include <bits/stdc++.h>
using namespace std ;
#define leng 2 * 100001
long long n , c; 
long long ans ;
long long a[leng] ;
int luogu ( long long x ) ;
int main ( ){
	cin >> n ;
	cin >> c ;
	for ( int i = 1 ; i <= n ; ++i ){
		cin >> a[i] ;
	}
	sort ( a+1 , a+n+1 ) ;
	long long k ;
	for ( int i = 1 ; i <= n ; ++i ){
		k = a[i] + c ;
		int m = luogu( k ) ;
		for ( int j = m ; j <= n ; ++j ){
			if ( a[j] == k ) ans++;
			else break ;
		}
	}
	cout << ans ;
	return 0 ;
}
int luogu ( long long x ){
	int l = 1 , r = n ;
	int sum = 0 ;
	int mid ;
	while ( l < r ){
		mid = ( l + r ) / 2;	
		if ( x <= a[mid] ) r = mid ;
		else if ( x > a[mid] ) l = mid + 1 ;
	}
	return l ;
}
2023/8/31 16:39
加载中...