Cod sursa(job #2594873)

Utilizator DooMeDCristian Alexutan DooMeD Data 6 aprilie 2020 18:49:01
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <bits/stdc++.h>
using namespace std;
int n,k,v[16010];
bool posibil(int vol) {
   int nrt = 1, s = 0;
   for(int i=1; i<=n; i++) {
      if(v[i]>vol) return false;
      else if(s+v[i]<=vol)
         s+=v[i];
      else {
         nrt++;
         s=v[i];
      }
   }
   if(nrt<=k) return true;
   return false;
}
int main () {
   ifstream f ("transport.in");
   ofstream g ("transport.out");
   int ma = 0,sum = 0;
   f >> n >> k;
   for(int i=1; i<=n; i++) {
      f >> v[i];
      ma=max(v[i],ma);
      sum+=v[i];
   }
   int pmax = 0;
   int rez;
   while( (1<<pmax) <=sum) pmax++;
   rez=(1<<pmax);
   for(int p=pmax; p>=0; p--)
      if(posibil(rez-(1<<p))) rez-=(1<<p);
   g << rez;
   return 0;
}