Cod sursa(job #1339275)

Utilizator metrix007Lungu Ioan Adrian metrix007 Data 10 februarie 2015 19:51:27
Problema Transport Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <iostream>
#include <fstream>

using namespace std;
int n,k,st=0,dr=0,mij,x;
int a[16003];

int calcul(int dim)
{
    int nr=0,sum=0;
    for(int i=0;i<n;i++)
    {
        if(sum<dim && sum+a[i]<=dim)
           sum=sum+a[i];
        else
        {
            sum=a[i];
            nr++;
        }
    }
    //cout << sum<< "    ";
    return nr+1;
}
int main()
{
    ifstream in("transport.in");
    ofstream out("transport.out");

    in >> n >> k;

    for(int i=0;i<n;i++){
        in >> a[i];
        dr=dr+a[i];
        if(st<a[i])
            st=a[i];
    }

    while(st<=dr)
    {
        mij=(st+dr)/2;
        x=calcul(mij);
        if(x==k){
            while(calcul(mij-1)==k)
                mij--;
            out << mij;
            break;

        }
        if(x<k)
            dr=mij-1;
        if(x>k)
            st=mij+1;
    }

  //  cout << calcul(9);

    return 0;
}