POJ 3273 Monthly Expense 最大值最小 二分法

来源:互联网 发布:饥荒海难数据修改 编辑:程序博客网 时间:2024/06/17 02:41
#include<stdio.h>#include <stdlib.h>#include <string.h>int s[112345];int main(){    int n,m,i,low,high,mid,num,sum,z;    while(~scanf("%d %d", &n, &m)){        low = 0;        high = 0;        for(i = 0;i < n;i++){            scanf("%d", &s[i]);            if(low<s[i])    low = s[i];            high +=s[i];        }        while(low <= high){            mid = (low+high)/2;            sum = 0;            num =1;            for(i = 0;i < n;i++){                if(sum+s[i] <=mid){                    sum+=s[i];                }else {                    sum = s[i];                    num++;                }            }            if(num > m){                low = mid+1;            }else {                high =mid-1;                z = mid;            }        }        printf("%d\n", z);    }    return 0;}

0 0