Pagini recente » Cod sursa (job #1251197) | Cod sursa (job #3032948) | Cod sursa (job #2522576) | Cod sursa (job #2309569) | Cod sursa (job #408570)
Cod sursa(job #408570)
#include <stdio.h>
FILE *f=fopen ("transport.in", "r");
FILE *g=fopen ("transport.out", "w");
int n,k,i,ls,c,m,ld,s2,max,ver;
int v[16001];
long s;
void citire (void) {
int i;
fscanf (f, "%d%d", &n, &k);
for (i=1;i<=n;i++)
{
fscanf (f, "%d", &v[i]);
if (max<v[i])
max=v[i];
s+=v[i];
}
}
void suma() {
int i=1;
c=1;
while (i<=n && c<=k)
{
s-=v[i++];
if (s<0)
{
s=s2-v[i-1];
c++;
}
}
}
int main() {
citire();
ls=max;
ld=s;
while (1)
{
s=ls+(ld-ls)/2; s2=s;
suma();
if (c==k)
{
if (s2<m || !m)
m=s2;
ld=s2;
}
if (c<k)
{
ld=s2;
}
if (c>k)
{
ls=s2;
}
if (ver==s2)
break;
ver=s2;
}
if (ls==ld)
m=ld;
if (!m)
m=ld;
fprintf (g, "%d", m);
return 0;
}