fork(2) 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. c2+=1
  40. end
  41. c2-=1
  42. c1+=1
  43. end
  44. puts ans
Success #stdin #stdout 0.02s 8116KB
stdin
100
403305023
517512818
877548653
589473925
844934696
509860472
713161154
927004626
646230979
195355617
248501143
162346598
445357089
274341733
475831918
33644405
860692744
441680396
153542750
333654408
383555937
399374303
178883768
827166046
499751564
868830341
167033399
452444897
796613052
310287808
432751768
714404998
78178979
236080651
985327810
155562331
590092361
104530717
893065162
901252294
81763210
491323754
463846099
326665131
390979635
527534544
200171890
941574089
234179032
62300693
324920402
691968675
612172295
731415694
346491166
81471950
541238766
604257738
411582459
360400842
970817049
53465944
414036230
170490216
21467390
28707210
309610389
14059755
103580244
503213502
738262272
148776517
756377565
450650278
164186913
81410006
381320612
104667213
417872783
604083093
205023124
287159202
722668325
863334005
635231438
463352603
381068805
734163364
347371392
510014274
836056576
59749907
557511760
861506627
110751897
934278860
418587764
112026359
510083578
54150485
stdout
14537922262