Cod sursa(job #1802311)
| Utilizator | Data | 10 noiembrie 2016 09:22:13 | |
|---|---|---|---|
| Problema | Transport | Scor | 70 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.77 kb |
#include<fstream>
using namespace std;
int main()
{
int n,stare=0,k,i,v[16010],st,dr,mid,s=0,counter=1;
ifstream fin("transport.in");
ofstream fout ("transport.out");
fin>>n>>k;
for(i=0;i<n;++i)
{
fin>>v[i];
}
st=1;
dr=256000000;
while(st<=dr)
{
mid=(st+dr)/2;
for(i=0;i<n;++i)
{
s=s+v[i];
if(s>mid)
{
counter++;
s=v[i];
}
}
if(counter>k)
{
st=mid+1;
counter=1;
s=0;
stare=0;
}
else
{
dr=mid-1;
counter=1;
s=0;
stare=1;
}
}
if(stare==1) fout<<st;
else fout<<dr;
}
