Cod sursa(job #1200659)

Utilizator breahnadavidBreahna David breahnadavid Data 23 iunie 2014 12:14:16
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<iostream>
#include<fstream>
#include<vector>
#define maxn 100005

using namespace std;

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

vector <int> t;
int i,j,n,k,m,maxim,summax;

int val(int k)
        {
        int p=0,q=0;
        i=0;
        while(i<n)
                {
                p=0;
                while(p+t[i]<=k&&i<n)
                        {
                        p+=t[i];
                        i++;
                        }
                q++;
                }
        return q;
        }

int caut(int i,int j)
        {
         int mij=(i+j)/2;
         int w=val(mij);
         if(w<=k)
                {
                if(i==j)return i;
                else
                return caut(i,mij);
                }
         else
         if(w>k)return caut(mij+1,j);
        }
int main()
{
f>>n>>k;
m=n;
maxim=summax=0;
while(m>0)
        {
        f>>i;
        if(i>maxim)maxim=i;
        t.push_back(i);
        summax+=i;
        m--;
        }

g<<caut(maxim,summax);
g.close();
return 0;
}