2、3、4TEL求指点
查看原帖
2、3、4TEL求指点
587909
heyMoonquakes楼主2021/12/16 15:41
#include<stdio.h>
#define N (int)2e5
int main(){
	int num[N]={0};
	int n,i,c,low,high,mid,cnt,x,j;
	
	scanf("%d %d",&n,&c);
	for(i=0;i<n;i++){
		scanf("%d",&num[i]);
	}
	int min,temp,index;
	for(i=0;i<n-1;i++){
		min=num[i];
		index=i;
		for(j=i+1;j<n;j++){
			if(num[j]<min){
				min=num[j];
				index=j;
			}
		}
		temp=num[index];
		num[index]=num[i];
		num[i]=temp;
	}
	cnt=0;
	for(i=0;i<n;i++){
		x=num[i]+c;
		low=i+1;
		high=n-1;
		while(high>=low){
			mid=(high+low)/2;
			if(num[mid]==x){
				break;
			}
			else if(num[mid]<x){
				low=mid+1;
			}
			else if(num[mid]>x){
				high=mid-1;
			} 
		}
		if(num[mid]==x){
			cnt++;
			int a=mid;
			while(num[mid-1]==x&&mid>=i+1){
				cnt++;
				mid--;
			}
			while(num[a+1]==x&&a<=n-1){
				cnt++;
				a++;
			}
		}
	}
	printf("%d",cnt);
} 
2021/12/16 15:41
加载中...