Lang:Java
Edit12345678910111213141516171819202122232425262728293031import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int TASKS= in.nextInt();for (int task = 1; task <=TASKS; task++) {int N = in.nextInt();int P = in.nextInt();int W = in.nextInt();int H = in.nextInt();int[] a=new int[N];for(int i=0;i<N;i++){a[i]=in.nextInt();}int min=1,max=Math.min(W, H),curs=(min+max)/2,totalP,s=0;int wordsPerRow,rowsPerPage;while(true){if(curs==s)break;wordsPerRow=W/curs;rowsPerPage=H/curs;totalP=0;for(int i=0;i<N;i++){totalP=totalP+(int)Math.ceil((double)a[i]/wordsPerRow);}totalP=(int)Math.ceil((double)totalP/rowsPerPage);if(totalP<=P){s=curs;if(curs==max)break;else if(max-curs==1){curs=max;}else{