Cod sursa(job #1035332)

Utilizator tavi.belu1994FMI Belu Andrei Octavian tavi.belu1994 Data 18 noiembrie 2013 14:59:04
Problema Transport Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <iostream>
#include <cstdio>
#include <algorithm>
FILE *f,*g;
using namespace std;

int N,K,minc,V[16001];

void cautbin(int left, int right)
{
    int mij=(left+right)/2,k=0,poz=1;
    while(k<=K&&poz<=N)
    {
        int s=0;
        k++;
        while((s+V[poz])<=mij&&poz<=N)
        {
            s=s+V[poz];
            poz++;
        }
    }
    poz--;
    if(mij<minc&&k<=K&&poz==N)
    {
        minc=mij;
        cautbin(left,mij);
    }
    else if(mij<minc&&((k>K)||(poz!=N)))
    {
        if(mij!=left)
        {
            cautbin(mij,right);
        }
    }
}

int main()
{
    f=fopen("transport.in","r");
    g=fopen("transport.out","w");
    int i,sum=0;
    fscanf(f,"%d%d",&N,&K);
    minc=16000;
    for(i=1;i<=N;i++)
    {
        fscanf(f,"%d",&V[i]);
        sum=sum+V[i];
    }
    cautbin(0,2*sum);
    fprintf(g,"%d",minc);
    fclose(f);
    fclose(g);
    return 0;
}