Cod sursa(job #1306859)

Utilizator sorina.andreiAndrei Sorina sorina.andrei Data 31 decembrie 2014 16:40:21
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>
using namespace std;
int v[16000],n,k,st,dr;
void bin(int l);
int main ()
{
    FILE *fin;
    fin=fopen ("fisier.in","r");
    for (int i=0; i<n; ++i)
    {
        fscanf(fin,"%d",&v[i]);
        dr+=v[i];
        if(st<v[i])st=v[i];
    }
    fclose (fin);
    bin((st+dr)/2);
}
void bin(int l)
{
    FILE *fout;
    fout=fopen ("fisier.out","w");
    int drum=0,temp=v[0];
    for(int i=1; i<n; ++i)
    {
        if(temp+v[i]<=l)
        {
            temp+=v[i];
            continue;
        }
        else
        {
            temp=v[i];
            drum++;
            if(drum>k)
            {
                st=(st+dr)/2;
                bin((st+dr)/2);
            }
        }
    }
    if(st==dr)
    {
        fprintf(fout," %d",l);

        fclose (fout);
        return;
    }
    dr=(dr+st)/2;
    bin((st+dr)/2);
}