Решение задачи Ближайшие точки с Acmp

Без пояснения   Просмотров: 8



Код


    #include <iostream> 

using namespace std; 

void Swap (int &a,int &b) 

{int c=a;a=b;b=c;} 


void QuickSort(int a[],int b[], int n) 

{ 

	int l,r,x; 

	if(n<2)return; 

	l=0;r=n-1;x=a[n/2]; 

	do{while(a[l]<x)l++; 

		while(a[r]>x)r--; 

		if(l<=r) 

			{swap(a[l],a[r]); 

			 swap(b[l],b[r]); 

			 l++; 

	      	 r--; 

			}

	}while(r>=l); 

	QuickSort(a,b,r+1); 

	QuickSort(a+l,b+l,n-l); 


} 

int main() 

{ 

	int a[100000],b[100000],n,k,d; 

	cin>>n; 

	for(int i = 0; i < n; i++) 	

	{ cin>>a[i]; 

	  b[i]=i+1;} 

	QuickSort(a,b,n); 

	d=a[1]-a[0];k=0; 

	for(int i=1;i<n-1;i++) 

	if(a[i+1]-a[i]<d) 

		{

		d=a[i+1]-a[i]; 

		k=i; 

		} 

	cout<<d<<endl<<b[k]<<' '<<b[k+1]; 

}   
        

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться