Cod sursa(job #95600)

Utilizator megabyteBarsan Paul megabyte Data 29 octombrie 2007 17:27:51
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <cstdio>
#define INF "transport.in"
#define OUF "transport.out"
#define NMAX 16384

int v[NMAX],n,k;

int alltrans(int vol)
{
    int i,sum,c,ok;
    c=k;sum=0;
    i=1;ok=1;
    while(i<=n&&c>0&&ok)
    {
               if(v[i]>vol) ok=0;
               sum+=v[i];
               if(sum>vol) 
               {
                           sum=0;
                           --c;
               }
               else ++i;
    }
    if(i<=n&&c==0) ok=0;
    return ok;
}

int main()
{
    int i,st,dr,mij,vmin;
    FILE *in,*out;
    in=fopen(INF,"r");
    out=fopen(OUF,"w");
    fscanf(in,"%d%d",&n,&k);
    for(i=1;i<=n;++i) fscanf(in,"%d",v+i);
    
    /*printf("vol camionului:");scanf("%d",&mij);
    printf("%d",alltrans(mij));
    scanf("%d",&i);*/
    
    st=1;dr=1<<28;vmin=dr;
    while(st<=dr)
    {
                 mij=(st+dr)/2;
                 if(alltrans(mij))
                 {
                                  vmin=mij;
                                  dr=mij-1;
                 }
                 else st=mij+1;
    }
    
    fprintf(out,"%d\n",vmin);
    fclose(in);fclose(out);
    return 0;
}