Cod sursa(job #319899)

Utilizator iondionGeorge Pascu iondion Data 2 iunie 2009 18:05:43
Problema Transport Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <stdio.h>
#define NMax 16000
#define KMax 16000

int saltele[NMax];
int N, K;

int main(void)
{
    FILE* fin = freopen("transport.in", "r", stdin);
    FILE* fout = freopen("transport.out", "w", stdout);
    int i, j=0;
    int inf=0, sup=0, sum=0;
    int st, dr, m, transp;
    int capac;
    scanf("%d %d", &N, &K);
    
    for(i=0; i<N; i++)
    {
        scanf("%d", &saltele[i]);
        
        if(j==K)
        {
            if(sup<sum)
                sup = sum;
            sum = saltele[i];
        }
        else
        {
            sum += saltele[i];
        }
        j++;
        if(inf < saltele[i])
            inf = saltele[i];
    }
    printf("%d - %d\n", inf, sup);

    while(inf < sup-1)
    {
        m = (inf+sup)/2;
        transp = 0;
        
        i=0;
        printf("%d\n", m);
        
        while(i<N)
        {
            capac = m;
            do
            {
                capac -= saltele[i];
                i++;
            }
            while(capac >= 0);
            i--;
            transp++;
        }
        
        if(transp <= K)
            sup = m;
        else
            inf = m;
    } 
    
    printf("%d", m);
    
    return 0;
}