求助!二分90分
  • 板块P2094 运输
  • 楼主0928_14
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/17 13:03
  • 上次更新2023/11/17 16:47:44
查看原帖
求助!二分90分
992348
0928_14楼主2023/11/17 13:03
#include<bits/stdc++.h>
using namespace std;
	int n,k,A[10000+11];
	bool cmp(int x,int y)
	{
		return x>y;
	}
int main(){
	cin>>n>>k;
	for(int i=1;i<=n;i++)
	{
		cin>>A[i];
	}
	A[n+1]=10000+10;
	sort(A+1,A+1+n,cmp);
	for(int i=1;i<n;i++)
	{
		int x=(A[i]+A[i+1])/k;
		A[i+1]=x;
		A[i]=-1;
		int l=i,r=n+1,mid;
		while(l+1<r)
		{
			mid=(l+r)/2;
			if(x>=A[mid])
			{
				r=mid;
			}
			else
			{
				l=mid;
			}
		} 
	  //	cout<<r<<" "<<A[r]<<" "<<A[l]<<"\n";
		for(int j=i+1;j<=r-1;j++)
		{
			A[j]=A[j+1];
		}
		A[r]=x;
	//	cout<<"\n";
	}
	cout<<A[n];
return 0;
}
/*
3 4
7 6 5 4
*/
2023/11/17 13:03
加载中...