提交时间:2024-01-25 20:59:53

运行 ID: 128592

#include<cstdio> int a[101]; //思路:运用二分法 int countK(int N,int l) { int k=0; for(int i=0;i<N;i++) k+=a[i]/l; return k; } int binarySolve(int N,int K)//K为要求的木棒个数 { int mid; int left=0,right=a[0]; for(int i=1;i<N;i++) { if(a[i]>right) right=a[i]; } while(left<right){ mid=(left+right)/2; if(K>countK(N,mid)) right=mid; else left=mid+1; } return left-1; } int main() { int n; int K; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d",&a[i]); } scanf("%d",&K); printf("%d\n",binarySolve(n,K)); return 0; }