Cod sursa(job #895717)

Utilizator MihaiPParpalea Mihai MihaiP Data 27 februarie 2013 12:20:19
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <iostream>
#include <cstdio>
#include <fstream>

using namespace std;

int KTran,NSal,a[16000],li,lf;

void citire()
{
     ifstream fin("transport.in");
        fin>>NSal>>KTran;

    for(int i=1;i<=NSal;i++)
        {fin>>a[i];
         lf+=a[i];
         if(li<a[i]) li=a[i];
        }
    }

int ok (int b)
{
  int tran=0,con=0;

    for(int i=1;i<=KTran;i++)
    {
        while(tran+a[con+1]<b) {
            tran+=a[++con];
            if(con==NSal) break;
        }
            if(con==NSal) break;
            tran=0;
    }
  if    (con==NSal) return 1;
  return 0;
}

int main()
{

    ofstream fout("transport.out");
    citire();
    int m;
    while(li<=lf)
        {
                m=(li+lf)/2;
                if(ok(m)) lf=m-1;
                else li=m+1;
        }
    cout<<m;



    return 0;
}