Cod sursa(job #1773028)

Utilizator dracopolalexAlex Dracopol dracopolalex Data 7 octombrie 2016 14:40:33
Problema Transport Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
// solutie 1

#include <iostream>
#include <algorithm>
#include <fstream>

using namespace std;

ifstream in("transport.in");
ofstream out("transport.out");

int v[16000],v1[16000],i,n,k,mx,s=0,s1=0,s2=0,x=0;

void findmx()
{
    while(k)
    {
        for(i=x;i<=n-1;i++)
        {
            if(mx>=s1+v[i]) s1+=v[i];
            else {x=i;k--; break; }
        }
        s2+=s1;
        s1=0;
        if(s2==s) k=0;
    }
}

int main()
{
    in>>n>>k;
    for(i=0;i<=n-1;i++) { in>>v[i]; v1[i]=v[i]; }
    sort(v1,v1+n);
    mx=v1[n-1];
    for(i=0;i<=n-1;i++) s+=v[i];
    findmx();
    while(s2<s) { mx++; k=3; s1=0; x=0; s2=0; findmx();}
    out<<mx;
    return 0;
}