8分!?二分两个点超时,一个AC其他全WA?
查看原帖
8分!?二分两个点超时,一个AC其他全WA?
735089
ECNUAT_LZX楼主2022/9/27 21:29
#include<bits/stdc++.h>
using namespace std;
long long a[200005],c,n,sum=0;
int main(){
	cin >> n >> c;
	for(int i=0;i<n;i++){
		cin >> a[i];
	}
	sort(a,a+n);
	for(int i=0;i<n;i++){
		long long b=a[i]-c;
		if(b>=0){
			int l=0,r=n;
			while(l<=r){
				int mid=(l+r)/2;
				if(b>a[mid]){
					l=mid+1;
				}
				else if(b<a[mid]){
					r=mid-1;
				}
				else if(b==a[mid]){
					sum++;
					if(a[mid+1]==b){
						l++;
					}
					else if(a[mid-1]==b){
						r--;
					}
					else{
						break;
					}
				}
			}
		}
	}
	cout << sum;
	return 0;
}

2022/9/27 21:29
加载中...