fork(2) download
  1. #include <iostream>
  2. #define ll long long
  3. using namespace std;
  4. bool condition(ll *a,ll n,ll k,ll ans)
  5. {
  6. ll cur_sum=0,painter=0;
  7. for(ll i=0;i<n;i++)
  8. {
  9. if(cur_sum+a[i]<=ans){
  10. cur_sum+=a[i];
  11. }
  12. else
  13. {
  14. painter++;
  15. if(painter>k)
  16. return false;
  17. cur_sum=a[i];
  18. }
  19. }
  20. if(cur_sum){
  21. painter++;
  22. if(painter>k)
  23. return false;
  24. }
  25. return true;
  26. }
  27. ll bst(ll *a,ll n,ll s,ll e,ll k)
  28. {
  29. ll ans=0;
  30. while(s<=e)
  31. { ll mid=(s+e)/2;
  32. if(condition(a,n,k,mid))
  33. {
  34. ans=mid;
  35. e=mid-1;
  36. }
  37. else
  38. {
  39. s=mid+1;
  40. }
  41. }
  42. return ans;
  43. }
  44. int main() {
  45. ll n,k,t;
  46. ll total=0,mx=0,s,e;
  47. cin>>k>>n>>t;
  48. ll a[n];
  49. for(ll i=0;i<n;i++)
  50. {
  51. cin>>a[i];
  52. total+=a[i];
  53. mx=max(mx,a[i]);
  54. }
  55. s=mx;
  56. e=total;
  57. ll ans=bst(a,n,s,e,k)*t;
  58. cout<<ans%10000003;
  59. }
  60.  
Success #stdin #stdout 0s 15232KB
stdin
Standard input is empty
stdout
Standard output is empty