Cod sursa(job #1020220)

Utilizator vlad.florescu94FMI Florescu Vlad - Adrian vlad.florescu94 Data 1 noiembrie 2013 20:01:08
Problema Transport Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n,k,v[16001],suma=0,s,i,mic=1;
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];mic=max(mic,v[i]);}
 verif(s,mic,suma);
 while(test(s-1)==1)
    s--;
 g<<s;
 f.close();g.close();
 return 0;
}