Cod sursa(job #1031566)

Utilizator popovicirobpopovici robert popovicirob Data 15 noiembrie 2013 18:06:43
Problema Transport Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <stdio.h>
#include <stdlib.h>
int v[16000];
int main()
{   FILE*fi,*fout;
    int i,j,n,con,max,a,b,sum,s,k,flag;
    fi=fopen("transport.in" ,"r");
    fout=fopen("transport.out" ,"w");
    fscanf(fi,"%d %d\n" ,&n,&k);
    s=0;
    a=0;
    for(i=0;i<n;i++)
    {
        fscanf(fi,"%d\n" ,&v[i]);
        if(a<v[i])
         a=v[i];
        s=s+v[i];
    }
    flag=1;
    b=s;
    while(flag)
    {
        max=(a+b)/2;
        printf("%d " ,max);
        con=0;
        j=0;
        while(j<n&&con<k+1)
        {
            sum=0;
            while(sum<max&&j<n)
            {
                sum=sum+v[j];
                j++;
            }
            if(sum>max&&j<n)
             j--;
            con++;
        }
        if(sum>max&&j==n)
         con++;
        if(con==k)
        {
            fprintf(fout,"%d" ,max);
            flag=0;
        }
        if(con>k)
        {
           if((a+b)/2==a)
            a=(a+b)/2+1;
           else
             a=(a+b)/2;
        }
        if(con<k)
            b=(a+b)/2;
    }
    fclose(fi);
    fclose(fout);
    return 0;
}