Cod sursa(job #640267)

Utilizator gicu_01porcescu gicu gicu_01 Data 25 noiembrie 2011 02:06:00
Problema Transport Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <stdio.h>
#include <stdlib.h>
int caut_bin(int,int);
int test(int);
int n,k,a[16000];

int test(int x)
{
    int p,s,i;
    s=0;p=0;
    for (i=1; i<=n; i++)
    {
        s=s+a[i];
        if (s==x) {p++; s=0;} else
         if (s>x) {s=0; i--; p++;}
    }
    if (s>0) p++;
    return p;
}

int caut_bin(int i,int j)
{
    int x,m;
    m=(i+j)/2; x=test(m);
    if (i==j) return m; else
    if (x<=k) caut_bin(i,m); else caut_bin(m+1,j);
}

int main()
{
    freeopen("transport.in","r",stdin);
    freeopen("transport.out","w",stdout);
    scanf("%i%i",&n,&k);
    int s,i,c1,max;
    s=0;max=0;
    for (i=1;i<=n;i++)
    {
        scanf("%i",&a[i]);
        if (max<a[i]) max=a[i];
        s=s+a[i];
    }
    c1=test(max);
    if (c1<=k) printf("%i",c1); else
    printf("%i*****",caut_bin(max,s));
    return 0;
}