Cod sursa(job #1037313)

Utilizator geo.cristinaOana Georgiana-Cristina geo.cristina Data 20 noiembrie 2013 00:22:37
Problema Transport Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("transport.in");


int n,i,*a,k,st=0,dr,cant,mij,drum;

int main()
{
    f>>n;
    f>>k;
    a=new int[n];
    for(i=1;i<=n;i++)
    {
        f>>a[i];
        if(a[i]>st)
          st=a[i];
        dr=dr+a[i];
    }
    f.close();
    while(st<dr)
    {
        cant=0;
        drum=1;
        mij=(st+dr)/2;
        for(i=1;i<=n;i++)
          {
              if(cant+a[i]<=mij)
                 cant=cant+a[i];
              else
              {
                cant=a[i];
                drum++;
              }
          }
        if(drum>k)
          st=mij+1;
        else
          dr=mij-1;
    }
    delete a;
    ofstream g("transport.out");
    g<<mij;
    g.close();
    return 0;
}