Cod sursa(job #1546013)

Utilizator nedelcu11Nedelcu Mihai Vlad nedelcu11 Data 7 decembrie 2015 16:29:38
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<cstdio> 
int n, k, a[16002];  
bool ok(int x) 
{   int cx=x, nrt=1; 
    for(int i=1; i<=n; ++i)
	{   if (a[i]>cx) return false; 
        if (a[i]>x) 
		{   ++nrt; 
            if(nrt>k) return false; 
            x=cx-a[i]; 
            continue; 
        } 
        x -= a[i]; 
    } 
    return true; 
} 
int cautbin()
{   int i, pas=1<<28; 
    for(i=0; pas; pas >>= 1) 
        if(!ok(i+pas)) i += pas; 
    return i+1; 
} 
int main() 
{   freopen("transport.in", "r", stdin); 
    freopen("transport.out", "w", stdout); 
    scanf("%d %d",&n,&k); 
    for (int i=1; i<=n; ++i) scanf("%d",&a[i]); 
    printf("%d\n", cautbin()); 
    return 0; 
}