Cod sursa(job #2257027)

Utilizator HalaszHalasz Botond Halasz Data 9 octombrie 2018 16:08:50
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <iostream>
#include <stdio.h>
#include <fstream>

using namespace std;
int n,k,t[16005];

int teszt(int m)
{
    int f=k,i=0,sz=0;
    while(i<n && f!=0)
    {
        if(sz+t[i]<=m)sz += t[i];
        else
        {
            sz=0;
            f--;
            sz += t[i];
        }
        i++;
    }
    if(f==0)return 1;
    else return 0;
}

int binker(int a, int b, int x)
{   int k=(a+b)/2;
    if(a==b)return a;
    else if(teszt(k))return binker(k+1,b,x);
    else return binker(a,k,x);
}


int main()
{
    int i;
    ifstream be("transport.in");
    be>>n>>k;
    be>>t[0];
    int xmax=t[0],xosz=t[0];
    for( i=1;i<n;i++)
    {
        be>>t[i];
        if(xmax<t[i])xmax=t[i];
        xosz +=t[i];
    }
    ofstream ki("transport.out");
    ki <<binker(xmax,xosz,(xmax+xosz)/2);
   // for( i=0;i<n;i++)cout <<t[i]<<' ';


    return 0;
}