Cod sursa(job #902555)

Utilizator MihaiPParpalea Mihai MihaiP Data 1 martie 2013 14:59:43
Problema Transport Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <cstdio>
#include <fstream>
# define FOR(i,j,n) for(int i=j;i<=n;i++)
using namespace std;

int KTran,NSal,a[16003],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)
// 1 daca se poate
{
  int tran=0,con=0;
    FOR(i,1,KTran)
    {
        while(tran+a[con+1]<b)
            {tran+=a[++con];
              if(con==NSal) return 1;
            }
        tran=0;
    }
  return 0;
}

int main()
{

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



    return 0;
}