Cod sursa(job #1305206)

Utilizator SorinmocanuFMI Sorin Mocanu Sorinmocanu Data 29 decembrie 2014 17:14:05
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<iostream>
#include<fstream>
using namespace std;
unsigned int a[16000],n,k;

int verif(unsigned int c)
{
    unsigned int S=0,r=1,i=1;
    while(i<=n&&r<=k)
    if(S+a[i]<=c) {S=S+a[i]; i++;}
    else {r++; S=0;}
    if(i==n+1) return 1; return 0;
}

int caut(unsigned int s,unsigned int d)
{
    unsigned int m;
    if(s==d) return s;
    m=(s+d)/2;
    if (verif(m)) return caut(s,m);
    else return caut(m+1,d);
}

int main()
{
    ifstream f("transport.in");
    ofstream g("transport.out");
    unsigned int i,p=0;
    f>>n>>k;
    for(i=1;i<=n;i++)
        {f>>a[i]; p=p+a[i];}

    g<<caut(1,p);

    f.close();
    g.close();
    return 0;
    }