Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<cstdio>#include<algorithm>using namespace std;int p[1005],W,H,P,n;int judge(int size){int row=H/size,col=W/size,sr=0,page=0;for(int i=0;i<n;i++)sr+=p[i]/col+(p[i]%col>0);page=sr/row+(sr%row>0);return page<=P;}int main (){//freopen("in.txt","r",stdin);int t;scanf("%d",&t);while(t--){scanf("%d%d%d%d",&n,&P,&W,&H);for(int i=0;i<n;i++)scanf("%d",&p[i]);int st=1,ed=min(W,H),mid,result=0;while(st<=ed){mid=(st+ed)/2;if(judge(mid)){st=mid+1;result=max(result,mid);}