为什么只过了第一个求思路
查看原帖
为什么只过了第一个求思路
1198866
yinY_楼主2025/1/28 18:52
import java.util.Scanner;



public class p1182 {
	static int n,m;
	static long[] ar;
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		n=scanner.nextInt();
		m=scanner.nextInt();
		m--;
		ar=new long[(int) (n+1)];
		
		for (int i = 1; i <=n; i++) {
			int a=scanner.nextInt();
			ar[i]=ar[i-1]+a;
		}
		
		long l=1,r=ar[ n];
		long ans=0;
		while(l<=r) {
			long mid=((l+r)/2);
			if (judge(mid)) {
				l=mid+1;
				ans=mid;
			}else {
				r=mid-1;
			}
		}
		System.out.println(ans);
		
		
	}
	private static boolean judge(long mid) {
		// TODO Auto-generated method stub
		int ind=0,tot=m;
		for (int i = 1; i <=n; i++) {
			if (tot<0) {
				break;
			}
			if (ar[i]-ar[ind]>=mid) {
				tot--;
				ind=i;
			}
		}
		if (tot<=0) {
			return true;
		}
		return false;
	}
}
2025/1/28 18:52
加载中...