Cod sursa(job #354906)

Utilizator Adela_BaciuAdela Baciu Adela_Baciu Data 9 octombrie 2009 21:07:52
Problema Transport Scor 60
Compilator cpp Status done
Runda cautb1 Marime 0.68 kb
#include<cstdio>
long n,k,x[16005];
bool ok (int cap)
{
    int nrt=1;
    int cc=0;
    int i;
    for (i=1;i<=n&&nrt<=k;++i)
	{
        if (x[i]>cap) 
			return false;
        else
            {
				if ( cc + x[i] <= cap )
					cc += x[i];
				else
				{
					cc=x[i];
					nrt ++ ;
				}
			}
	}
    if ( nrt > k ) 
		return false ;
    return true;
}

int cb()
{
	int i,pas=(1<<15);
	for(i=0;pas;pas>>=1)
		if(!ok(i+pas))
			i+=pas;
	return i+1;
}
int main()
{
	int i;
	freopen("transport.in","r",stdin);
	freopen("transport.out","w",stdout);
	scanf("%ld%ld",&n,&k);
	for(i=1;i<=n;i++)
		scanf("%ld",&x[i]);
	n=cb();
	printf("%ld",n);
	return 0;
}