Cod sursa(job #1183999)

Utilizator apopeid15Apopei Daniel apopeid15 Data 10 mai 2014 20:41:48
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>
#define MAXN 16005
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
 
int n,m,v[MAXN],st,dr,mij,x,S;
 
bool merge(int p);
 
int main()
{
    int i;
    f>>n>>m;
    for(i=1;i<=n;i++)
        f>>v[i];
    st=1;dr=MAXN*MAXN;
    while(st<dr){
        mij=(st+dr)>>1;
        if(merge(mij))
            dr=mij-1;
        else
            st=mij+1;}
    while(!merge(dr))
        dr++;
    g<<dr<<'\n';
    f.close();
    g.close();
    return 0;
}
 
bool merge(int p){
    int i;
    x=S=0;
    for(i=1;i<=n&&x<m;i++){
        S+=v[i];
        if(S>p){
            x++;
            S=0;
            i--;}}
    if(x==m)
        return 0;
    return 1;}