Cod sursa(job #1260049)

Utilizator ZeBuGgErCasapu Andreas ZeBuGgEr Data 10 noiembrie 2014 20:46:31
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <fstream>
 
using namespace std;
 
ifstream fin ("transport.in");
ofstream fout ("transport.out");
 
int main()
{
    int n,k,s=0,temp3;
    long int ok=0,temp=0,sum=0,temp2;
    bool check=0;
    fin>>n>>k;
    int a[n];
    for(int i=0;i<n;i++)
    {
            fin>>a[i];
            if(s<a[i])
            {
                      s=a[i];
            }
            sum+=a[i];
    }
    while(1)
    {
            temp3=1;
            temp=(s+sum)/2;
            temp2=0;
            for(int i=0;i<n;i++)
            {
                    if(temp2+a[i]<=temp)
                    {
                                        temp2+=a[i];
                    }
                    else
                    {
                        temp2=0;
                        temp2+=a[i];
                        temp3++;
                    }
            }
            if(temp3>k)
            {
                       s=temp+1;
            }
            else if(temp3<k)
            {
                 sum=temp-1;
            }
            else
            {
                sum=temp;
                ok=temp;
            }
            if(s>=sum)
            {
                      if(check==1)
                      {
                                  break;
                      }
                      check=1;
            }
    }
    fout<<ok;
}