Cod sursa(job #2160917)
| Utilizator | Data | 11 martie 2018 14:43:43 | |
|---|---|---|---|
| Problema | Transport | Scor | 40 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.77 kb |
#include <stdio.h>
int main()
{
int v[16005],n,k,i,j,cmin,dr,st,kcrt,s,mij;
FILE *f,*g;
f=fopen("transport.in","r");
g=fopen("transport.out","w");
fscanf(f,"%d%d",&n,&k);
for(i=1;i<=n;i++)
fscanf(f,"%d",&v[i]);
cmin=v[1];
for(i=2;i<=n;i++)
if(v[i]>cmin)
cmin=v[i];
st=cmin;
dr=16000;
while(st<=dr)
{
mij=(st+dr)/2;
kcrt=1;
s=v[1];
for(i=2;i<=n;i++)
{
if(s+v[i]>mij){
kcrt++;
s=v[i];
}
else
s+=v[i];
}
//printf("%d\n",kcrt);
if(kcrt>k)
st=mij+1;
else
dr=mij-1;
}
fprintf(g,"%d",mij);
}
