Cod sursa(job #1527297)

Utilizator ManDark97Melinte Tudor-Matei ManDark97 Data 17 noiembrie 2015 23:09:25
Problema Transport Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include<fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int v[16000],s,mx,i,k,n;

int test(int K)
{
    int i,S=0,T=0;
    for(i=0;i<n;i++)
    {

        if(S+v[i]<=K)
            S+=v[i];
        else
        {T++;S=v[i];}
    }
    return T+1;

}
int manevrabinara(int st,int dr)
{
    int mij=(st+dr)/2,tst=test(mij);
    cout<<st<<" "<<dr<<" "<<tst<<" "<<mij<<endl;
   if(st>dr)return 0;
    if(tst==k)
        return mij;
    if(tst<k)
        return manevrabinara(st,mij-1);
    if(tst>k)
        return manevrabinara(mij+1,dr);

}
int main()
{
    in>>n>>k;
    mx=0,s=0;
    for(i=0; i<n; i++)
    {
        in>>v[i];
        if(v[i]>mx)
            mx=v[i];
        s+=v[i];
    }
   // cout<<mx<<" "<<s<<endl;
   for(int j=mx;j<=s;j++)
    if(test(j)==k)
   {out<<j;return 0;}
   // out<<manevrabinara(mx,s);
 //cout<<test(8);



    return 0;
}