Cod sursa(job #1255879)

Utilizator fluture.godlikeGafton Mihnea Alexandru fluture.godlike Data 5 noiembrie 2014 14:00:35
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <stdio.h>

int n,k,a[16000],max=0;

int test(int nr)
{
    int ct=0,temp=0;
    for(int i=0;i<n;i++)
    {
            if(ct==k)
            {
                     return 0;
            }
            else if(temp+a[i]<=nr)
            {
                 temp+=a[i];
            }
            else
            {
                ct++;
                temp=0;
            }
    }
    return 1;
}

int main()
{
    FILE *fin,*fout;
    fin=fopen("transport.in","r");
    fout=fopen("transport.out","w");
    fscanf(fin,"%d %d",&n,&k);
    int s=0,mij,min=32000;
    for(int i=0;i<n;i++)
    {
            fscanf(fin,"%d",&a[i]);
            s+=a[i];
            if(max<a[i])
            {
                        max=a[i];
            }
    }
    if(max<s/k)
    {
               max=s/k;
    }
    while(s-max>1)
    {
            mij=(max+s)/2;
            if(test(mij)==1)
            {
                            if(min>mij)
                            {
                                       min=mij;
                            }
                            s=mij;
            }
            else
            {
                max=mij;
            }
    }
    fprintf(fout,"%d",min);
}