Cod sursa(job #2694685)

Utilizator Paul281881818818181991919191881818Draghici Paul Paul281881818818181991919191881818 Data 10 ianuarie 2021 13:58:51
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
// Example program
	
#include <fstream>
	
#define NMAX 16005
	
using namespace std;
	
ifstream cin("transport.in");
	
ofstream cout("transport.out");
	
bool verf(int *v,int &n,long long int s,int k){
	
    int sum=0,c=0;
	
    for(int i=1;i<=n;i++){
	
        if(v[i]>s ){return false;}
	
        
		if(sum+v[i]<=s){
			sum+=v[i];
		}
        else{
            sum=v[i];c++;
            }
        }
	
    return (c+1<=k)?true:false;
	
    }
	
int main()
	
{
	
    int n,k,v[NMAX];long long int s=0;
	
    cin>>n>>k;
	
    for(int i=1;i<=n;i++){
	
        cin>>v[i];s+=v[i];
	
        }
	
   long long int mij,st=1,dr=s,mn=s;
	
    while(dr>=st){
	
        mij=(dr+st)/2;
	
        if(verf(v,n,mij,k)){
	
            mn=mij;
	
            dr=mij-1;
	
            }
	
        else{
	
            st=mij+1;
	
            }
	
        }
	
    cout<<mn;
	
    return 0;
	
}