Cod sursa(job #2208314)

Utilizator andreic06Andrei Calota andreic06 Data 29 mai 2018 08:39:23
Problema Transport Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <stdio.h>
#include <stdlib.h>

int v[16001];
int main()
{
    FILE *fin, *fout;
    int n, k, i;
    int s, max;
    int st, dr, mij, t;
    int nr;
    int pp;
    fin = fopen ( "transport.in", "r" );
    fscanf ( fin, "%d%d", &n, &k );
    fout = fopen ( "transport.out", "w" );
    max = 0;
    s = 0;
    for ( i = 1; i <= n; i ++ ){
       fscanf ( fin, "%d", &v[i] );
       if ( max < v[i] )
         max = v[i];
       s = s + v[i];
    }
    st = max;
    dr = s;
    pp = 0;
    while ( st <= dr && pp == 0 ){
       mij = ( st + dr ) / 2;
       printf ( "%d %d %d ", st, dr, mij );
       s = 0;
       t = 0;
       i = 1;
       while ( i <= n ){
          s = s + v[i];
          if ( s > mij ){
            s = 0;
            t++;
          }
          else
            i++;
       }
       printf ( "%d ", t );
       if ( t < k )
         dr = mij - 1;
       else if ( t > k ){
         nr = mij;
         st = mij + 1;
       }
       else{
         pp = 1;
         nr = mij;
       }
    }
    fprintf ( fout, "%d", nr + 1 );
    return 0;
}