Cod sursa(job #2515964)

Utilizator NightChipsAlbert Maftei NightChips Data 29 decembrie 2019 21:17:30
Problema Transport Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n,k,s[32001],MAX;
void Citire()
{ fin>>n>>k;
  fin>>s[0];
  MAX=s[0];
  int a;
  for(int i=1;i<n;i++)
  { fin>>a;
    MAX=(a>MAX)?a:MAX;
    s[i]=s[i-1]+a;
  }
}

short test(int a)
{ int c=0,t=0;
  for(int i=0;i<n;i++)
  { while(s[i]-t<a&&i<n) i++;
    if(i>0)t=s[i-1];
    else return 3;
    c++;
    if(c>k) return 3;
  }
  if(k>c) return 1;
  cout<<"Testing "<<a<<'\n';
  if(test(a-1)==3) return 2;  
  else return 1;
}

int CautareBinara(int st, int dr)
{ int mid;
  while(st<=dr)
  { mid=(st+dr)/2;
   // cout<<mid<<'\n';
   // cout<<test(mid)<<"\n\n";
    switch(test(mid))
    { case 1:
        dr=mid-1;
        break;
      case 3:
        st=mid+1;
        break;
      case 2:
        return mid;
        break;
    }
  }
  cout<<"Exit";
  return st;
}
int main()
{ Citire();
  fout<<CautareBinara(MAX,s[n-1])<<'\n';
}