Cod sursa(job #2924554)

Utilizator DumistefDumitrache Stefan Daniel Dumistef Data 4 octombrie 2022 22:17:42
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream in ("transport.in");

ofstream out ("transport.out");

int v[16005];

int
main () 
{
  
int n, k, maxim = -1, sum = 0, st, dr, sol, mij, k_2 = 0, transport = 0;
  
in >> n >> k;
  
for (int i = 1; i <= n; i++)
    
    {
      
in >> v[i];
      
sum += v[i];
      
if (v[i] > maxim)
	
	{
	  
maxim = v[i];
	
}
    
}
  
st = maxim;
  
dr = sum;
  
sol = -1;
  
sum = 0;
  
while (st <= dr)
    
    {
      
transport = 0;
      
mij = (st + dr) / 2;
      
int i = 1;
      
while (i != n + 1)
	
	{
	  
sum += v[i];
	  
if (sum > mij)
	    
	    {
	      
i--;
	      
transport++;
	      
sum = 0;
	    
}
	  
i++;
	
}
      
if (sum != 0)
	
	{
	  
transport++;
	  
sum = 0;
	
}
      
if (transport > k)
	
	{
	  
st = mij + 1;
	
}
      
      else
	
	{
	  
sol = mij;
	  
dr = mij - 1;
	
}
    
}
  
out << sol;

 
}