HDU 4390 Number Sequence 2 분

1468 단어 sequence
제목 주소:  http://acm.hdu.edu.cn/showproblem.php?pid=4390
 
#include<iostream>

#include<vector>

#include<list>

#include<deque>

#include<queue>

#include<stack>

#include<map>

#include<set>

#include<algorithm>

#include<cstdio>

#include<cstdlib>

#include<cstring>

#include<string>

#include<cmath>

#include<ctime>

using namespace std;



typedef long long LL;

const int N=500100;



int x[N];

int n,m;



bool test(int k)

{

    int i=1,t=0;

    while(i<=n)

    {

        if(x[i]%k==0)

            t+=(x[i])/k;

        else

            t+=(x[i])/k+1;

        i++;

    }

    if(t<=m) return false;//           ,         ,             

    return true;

}



int main()

{

    int i;

    while(cin>>n>>m&&n+m!=-2)

    {

        int max1=0;

        for(i=1;i<=n;i++)

        {

            scanf("%d",&x[i]);

            if(max1<x[i])

                max1=x[i];

        }

        int l=1,r=max1,mi;

        while(r>l)

        {

            mi=(r+l)/2;

            if(test(mi))//         ,     ,      ,     

                l=mi+1;

            else

                r=mi;

        }

        printf("%d
",r); } return 0; }

 

좋은 웹페이지 즐겨찾기