Cod sursa(job #614351)

Utilizator ion824Ion Ureche ion824 Data 6 octombrie 2011 10:27:08
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<fstream>
using namespace std;
int a[16001],n,k;

bool ok(int val){
     int v=0,k1=1,i;
     for (i=1;i<=n;++i){
         if (a[i]+v<=val)v+=a[i];
         else { v=a[i]; ++k1; }
         if (k1>k)return false;
         }
     return true;
     }

int main(void){
    ifstream fin("transport.in");
    ofstream fout("transport.out");
    int max=0,suma=0,mijloc,i;
    fin>>n>>k;
    for(i=1;i<=n;++i){
                      fin>>a[i];
                      if (a[i]>max) max=a[i];
                      suma+=a[i];
                      }
   
   while (max!=suma){
       mijloc=(max+suma)/2;
       if (ok(mijloc)) suma=mijloc; 
         else max=mijloc+1;  
         } 
   fout<<max; fout.close();
 return 0;   
}