Cod sursa(job #1879051)

Utilizator ana_teo_cygConstantinescu Ana Teodora ana_teo_cyg Data 14 februarie 2017 18:03:08
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>

using namespace std;
const int NMAX=16000;
int v[NMAX+5];
ifstream fin("transport.in");
ofstream fout("transport.out");
int main()
{

   int n,k,i,total,med,st,dr,tr,last,s;
   fin>>n>>k;
   total=0;
   for(i=1;i<=n;i++)
	 {
	 	 fin>>v[i];
	 	 total=total+v[i];
	 }
	 st=1;
	 dr=total;
	 while(st<=dr)
		{
			med=(st+dr)/2;
			s=0;
			/*calculam cate transporturi 
			sunt necesare pentru a transporta toate 
			saltelele cu un camion de capacitate med*/
			tr=0;
			for(i=1;i<=n;i++)
			{
				if(v[i]>med)
			    	{
			    		tr=k+1;
			    		break;
			    	}
				if(s+v[i]<=med)
				{
					s=s+v[i];
				}
				else
				{
					tr++;
					s=v[i];
				}
			}
			if(s<=med)
				 tr++;
			if(tr<=k)
			{
				last=med;
				dr=med-1;
			}
			else
				st=med+1;
		}
		 fout<<last<<"\n";
		 fin.close();
		 fout.close();
    return 0;
}