Cod sursa(job #1020190)

Utilizator vlad.florescu94FMI Florescu Vlad - Adrian vlad.florescu94 Data 1 noiembrie 2013 19:43:29
Problema Transport Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n,k,v[16001],volum,suma=0,s,i;
short test(int x)
{int nr=1,sum=0;
 for(i=0;i<n;i++)
   {sum=sum+v[i];
    if(sum>x)
      { nr++;
        sum=v[i];
      }
   }
 if(nr==k)
    return 1;
 if(nr>k)
    return 2;
 return 0;
}
void verif(int &s,int mini,int maxi)
{s=((mini+maxi)/2);
 if(test(s)==2)
    verif(s,s+1,maxi);
 if(test(s)==0)
    verif(s,mini,s-1);
}
int main()
{f>>n>>k;
 for(i=0;i<n;i++)
   {f>>v[i];suma=suma+v[i];}
 verif(s,1,suma);
 while(test(s-1)==1)
    s--;
 g<<s;
 f.close();g.close();
 return 0;
}