Cod sursa(job #2639075)

Utilizator eusebiu_alexandruMorar Eusebiu eusebiu_alexandru Data 31 iulie 2020 11:51:55
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <fstream>
	
using namespace std;
	
ifstream cin("transport.in");
	
ofstream cout("transport.out");
	
int v[16001];
	
bool verif(int x,int n,int k) {
	
        int sk=0,c=1;
	
        for(int i=1; i<=n; i++) {
	
                if(v[i]+sk<=x)
	
                        sk+=v[i];
	
                else {
	
                        sk=v[i];
	
                        c++;
	
                }
	
        }
	
        return (c>k);
	
}
	
int main() {
	
        int n,k,minn,maxx,x,s=0,mid,sk=0,last,ans=0;
	
        int p_max=28;
	
        cin>>n>>k;
	
        if(n==1) {
	
                cin>>x;
	
                cout<<x;
	
        } else {
	
                for(int i=1; i<=n; i++) {
	
                        cin>>x;
	
                        v[i]=x;
	
                        s+=x;
	
                        ans=max(ans,x)-1;
	
                }
	
                maxx=s;
	
                minn=s/k;
	
                for(int i = (1 << p_max); i > 0; i /= 2) {
	
                        if(verif(ans + i,n,k))
	
                                ans += i;
	
                }
	
                cout<<ans+1;
	
        }
	
        return 0;
	
}