Cod sursa(job #1305221)

Utilizator alinmocanu95FMI Alin Mocanu alinmocanu95 Data 29 decembrie 2014 17:26:39
Problema Transport Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<iostream>
#include<fstream>
using namespace std;
unsigned int k,s,c,a[16000],n,t,i,w;
int p;
int verifica(unsigned int m)
{
    w=0; //capacitate continua
    p=k; //transporturi totale
    for (i=1;i<=n;i++)
    {
        w+=a[i];
        if (w>m)
        {
        p--;w=a[i];
        }
    }
    if(w>0) p--;
    if (p>=0) return 1;
    else return 0;
}
int main()
{
    ifstream f("transport.in");
    ofstream g("transport.out");
    f>>n>>k;
    t=0; //capacitate totala
    p=k; //transporturi curente
unsigned int max=0;
    for(i=1;i<=n;i++)
        {f>>a[i];t+=a[i];
        if(a[i]>max) max=a[i];}
//c=[max,t]
    c=max;//capacitatea ceruta
unsigned int st=c;
unsigned int dr=t;
while (st<=dr)
    {if (verifica((st+dr)/2)==1)
          {c=(st+dr)/2;
          dr=(st+dr)/2-1;}
          else
          {st=(st+dr)/2+1;}
    }
    g<<c;
    f.close();
    g.close();
    return 0;
}