fork download
  1. def f(sum1,cs,c1,c2,c3,mode)
  2. s3=sum1-cs[c3]+cs[c1]
  3. s2=cs[c3]-cs[c2]
  4. s1=cs[c2]-cs[c1]
  5. if mode==true then
  6. return [s3,s2,s1].min
  7. else
  8. return [s3,s2].min
  9. end
  10. end
  11.  
  12. cs=[0]
  13. sum=0
  14. n=gets.to_i
  15. n.times{
  16. sum+=gets.to_i
  17. cs<<sum
  18. }
  19. c1=0
  20. c2=1
  21. ans=0
  22.  
  23.  
  24. c1=0
  25. c2=1
  26. c3=2
  27. while c1<n-2
  28. c2=c1+1 if c2<=c1
  29. while c2<n-1
  30. c3=c2+1 if c3<=c2
  31. while c3<n
  32. next if c3+1==n && c1==0
  33. s3L=f(sum,cs,c1,c2,c3+1,false)
  34. s3R=f(sum,cs,c1,c2,c3,false)
  35. #p [c1,c2,c3,s3L,s3R]
  36. if s3L<=s3R then
  37. ans=[ans,f(sum,cs,c1,c2,c3+1,false)].max
  38. c3+=1
  39. else
  40. ans=[ans,f(sum,cs,c1,c2,c3,false)].max
  41. break
  42. end
  43. end
  44. s2L=f(sum,cs,c1,c2,c3,true)
  45. s2R=f(sum,cs,c1,c2+1,c3,true)
  46. if s2L<=s2R
  47. c2+=1
  48. else
  49. break
  50. end
  51. end
  52. c1+=1
  53. end
  54. puts ans
Success #stdin #stdout 0.01s 7928KB
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
981