Cod sursa(job #2269578)

Utilizator alexandrapopoiuAlexandra Popoiu alexandrapopoiu Data 26 octombrie 2018 10:54:30
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <stdio.h>
using namespace std;
int v[16001];
int main()
{
    FILE *fin,*fout;
    int s,s1,max,st,dr,sir,k,i,mij,elem,n,m;
    fin=fopen("transport.in","r");
    fout=fopen("transport.out","w");
    fscanf(fin,"%d%d",&n,&k);
    max=0;
    s=0;
    for(i=1;i<=n;i++){
      fscanf(fin,"%d",&v[i]);
      if(v[i]>max)
        max=v[i];
        s+=v[i];
    }
    st=max;
    dr=s;
    while(st<=dr){
      mij=(st+dr)/2;
      s1=0;
      sir=1;
      for(i=1;i<=n;i++){
        if(s1+v[i]<=mij){
          s1=s1+v[i];
        }
        else{
          sir++;
          s1=v[i];
        }
      }
      if(sir>k){
        st=mij+1;
      }
      else
      {elem=mij;
        dr=mij-1;
      }
    }
    fprintf(fout,"%d",elem);
    return 0;
}