解决此题的关键在于如何算出接水的总时间。我们先用一个数组接收每个人需要打水的量,接下来用for语句控制一次所承载同时接水的人数m,通过遍历得出数组中前m个元素中最小的那个,并用x记录其索引。接下来再用一个for循环来进行同时减最小值,此最小值就代表时间的流逝,也代表此时需要换人接水,也就是p[x]=p[k],下一个人紧跟上来接水,依次遍历完后面的所有人。但需要注意的是,最后一个人的时候,并不是取最小值,而是取最大值,只有当时间最长的人完成了接水,整个接水任务才算完成,这样即可解决此题。

import java.util.*; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int m=sc.nextInt(); int[] p=new int[n]; int[] w=new int[m]; for(int i=0;i<n;i++) { p[i]=sc.nextInt(); }

int x=0;
int time=0;
for(int k=m;k<n;k++) {
	int min=100;
	for(int i=0;i<m;i++) {
	if(p[i]<min) {
		min=p[i];
		x=i;
	 }
	
    }
    for(int i=0;i<m;i++) {
	p[i]=p[i]-min;
	
    }
   p[x]=p[k];
   time=time+min;
}

int max=0;
for(int i=0;i<m;i++) {
	if(p[i]>max) {
		max=p[i];
	 }
	
    }
System.out.println(time+max);






}

}