fork(1) 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. c1=0
  16. c2=1
  17. ans=0
  18.  
  19.  
  20. c1=0
  21. c2=1
  22. c3=2
  23. while c1<n-2
  24. c2=c1+1 if c2<=c1
  25. while c2<n-1
  26. c3=c2+1 if c3<=c2
  27. while c3<n
  28. next if c3+1==n && c1==0
  29. s3L=[sum-cs[c3]+cs[c1],cs[c3]-cs[c2]].min
  30. s3R=[sum-cs[c3+1]+cs[c1],cs[c3+1]-cs[c2]].min
  31. #p [c1,c2,c3,s3L,s3R]
  32. if s3L<s3R then
  33. ans=[ans,f(sum,cs,c1,c2,c3+1)].max
  34. c3+=1
  35. else
  36. ans=[ans,f(sum,cs,c1,c2,c3)].max
  37. break
  38. end
  39. end
  40. s2L=f(sum,cs,c1,c2,c3)
  41. s2R=f(sum,cs,c1,c2+1,c3)
  42. if s2L<s2R
  43. c2+=1
  44. else
  45. break
  46. end
  47. end
  48. c1+=1
  49. end
  50. puts ans
Success #stdin #stdout 0.01s 7968KB
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
3273