Mai intai trebuie sa te autentifici.
Cod sursa(job #2072045)
Utilizator | Data | 21 noiembrie 2017 12:40:50 | |
---|---|---|---|
Problema | Transport | Scor | 80 |
Compilator | c | Status | done |
Runda | Arhiva de probleme | Marime | 0.64 kb |
#include <stdio.h>
#include <stdlib.h>
int v[16000];
int n,k;
int check(int r){
int i,s,c=1;
for(i=0;i<n;i++)
{
s+=v[i];
if(s+v[i+1]>r)
{
s=0;
c++;
}
}
if(c>k)
return 0;
return 1;
}
int main()
{
int i,r,p;
FILE*fi,*fo;
fi=fopen("transport.in","r");
fo=fopen("transport.out","w");
fscanf(fi,"%d%d",&n,&k);
for(i=0;i<n;i++)
{
fscanf(fi,"%d",&v[i]);
}
r=0;
p=1<<30;
while(p>0){
if(check(r+p)==0)
r+=p;
p/=2;
}
fprintf(fo,"%d",r+1);
fclose(fi);
fclose(fo);
return 0;
}