Առավելագույն գումարի ենթազանգվածի լուծում Բաժանիր և տիրիր (Divide & Conquer) ալգորիթմով

Առավելագույն գումարով ենթազանգվածը (maximum sum subarray) n ամբողջ թվերով գտնելու բազմաթիվ եղանակներ կան։ Այդ խնդիրի լուծման մեկ տարբերակն էլ «Բաժանիր և տիրիր» (Divide & Conquer) ալգորիթմի կիրառումն է։ Խնդիրը լուծելու համար զանգվածը ռեկուրսիվ ձևով բաժանում են երկու մասի, գտնում են առավելագույն գումարի ենթազանգվածը ձախ մասի, աջ մասի և այն մասի համար, որը հատում է միջին հատվածը, ապա դրանք համադրելով հաշվում են ամբողջ զանգվածի առավելագույն ենթազանգվածը։
Ստորև բերված է ալգորիթմի պսևդոքոդի մի օրինակ.
def max_subarray(a):
    # Հիմնական դեպքեր
    if len(a) == 0:
        return float('-inf'), float('-inf'), float('-inf')
    if len(a) == 1:
        return a[0], a[0], a[0]

    # Բաժանում (ձախ և աջ մասերի արդյունքների ստացում)
    ll, lmax, lr = max_subarray(a[:len(a) // 2])
    rl, rmax, rr = max_subarray(a[len(a) // 2:])
    lsum = sum(a[:len(a) // 2])
    rsum = sum(a[len(a) // 2:])

    # Վերցնել 3 թվերը և վերադարձնել առավելագույն պրեֆիքս-գումարը, առավելագույն սաֆիքս-գումարը և ընդհանուր առավելագույն գումարը
    return conquer(ll, lmax, lr, lsum, rl, rmax, rr, rsum)
Այս խնդրում ձեզ խնդրում են գրել conquer հատվածը, որտեղ տրված 8 թվից անհրաժեշտ է գտնել 3 արժեք, որոնք ներկայացնում են լավագույն պրեֆիքս-գումարը, միջին կետով հատող լավագույն գումարը և լավագույն սաֆիքս-գումարը։ 8 թվերը տրված են հետևյալ հերթականությամբ.
  1. Ձախ ենթազանգվածի լավագույն պրեֆիքս-գումարը
  1. Ձախ ենթազանգվածի առավելագույն գումարը
  1. Ձախ ենթազանգվածի լավագույն սաֆիքս-գումարը
  1. Ձախ ենթազանգվածի բոլոր թվերի գումարը
  1. Աջ ենթազանգվածի լավագույն պրեֆիքս-գումարը
  1. Աջ ենթազանգվածի առավելագույն գումարը
  1. Աջ ենթազանգվածի լավագույն սաֆիքս-գումարը
  1. Աջ ենթազանգվածի բոլոր թվերի գումարը

Մուտք

Մուտքի միակ տողը պարունակում է 8 ամբողջ թիվ, տրված վերոնշյալ հերթականությամբ։ Բոլոր թվերը չեն գերազանցում -ը բացարձակ արժեքով։

Ելք

Ծրագիրը պետք է տպի 3 թիվ՝ լավագույն պրեֆիքս-գումարը, միջին կետով հատող լավագույն գումարը և լավագույն սաֆիքս-գումարը։

Օրինակներ

Մուտք
Ելք
7 13 9 6 7 9 3 -2
13 16 7
7 13 9 6 5 25 3 1
11 25 10
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue