fork download
  1. def f(sum1,cs,c1,c2,c3)
  2. s3=sum1-cs[c3]+cs[c1]
  3. s2=cs[c3]-cs[c2]
  4. s1=cs[c2]-cs[c1]
  5. return [s3,s2,s1].min
  6. end
  7.  
  8. cs=[0]
  9. sum=0
  10. n=gets.to_i
  11. n.times{
  12. sum+=gets.to_i
  13. cs<<sum
  14. }
  15.  
  16.  
  17.  
  18. c1=0
  19. c2=1
  20. c3=2
  21. ans=f(sum,cs,c1,c2,c3)
  22. while c1<n-2
  23. c2=c1+1 if c2<=c1
  24. while c2<n-1
  25. c3=c2+1 if c3<=c2
  26. while c3<n
  27. s3L=cs[c3]-cs[c2]
  28. s3R=sum-cs[c3]+cs[c1]
  29. #p [c1,c2,c3,s3L,s3R]
  30. if s3L<s3R then
  31. ans=[ans,f(sum,cs,c1,c2,c3)].max
  32. c3+=1
  33. else
  34. ans=[ans,f(sum,cs,c1,c2,c3)].max
  35. break
  36. end
  37. end
  38. c3=c2+1 if c3<=c2
  39. c3=n-1 if n<=c3
  40. s2R=cs[c3]-cs[c2]
  41. s2L=cs[c2]-cs[c1]
  42. c3-=1
  43. if s2L<s2R then
  44. c2+=1
  45. else
  46. break
  47. end
  48. end
  49. c1+=1
  50. end
  51. puts ans
Success #stdin #stdout 0.01s 8016KB
stdin
100
1
934
744
263
530
701
509
753
257
257
120
712
352
844
706
109
394
331
367
170
933
918
848
973
869
981
224
550
593
165
170
552
428
191
625
636
921
945
311
863
485
364
302
711
237
877
432
930
398
676
492
191
345
135
426
630
31
728
127
744
335
105
761
750
621
257
933
573
614
491
510
120
406
696
50
328
720
498
825
597
650
357
185
94
246
8
307
510
755
353
666
784
739
802
691
331
338
196
657
964
stdout
16907