Секіру


Шешімді жөнелту

Ұпайлар: 1
Уақыт шектеуі: 2.0s
Жад шектеуі: 512M

Author:
Problem type
Рұқсат етілген тілдер
Assembly, Awk, Brain****, C, C++, Go, Java, Pascal, Perl, PHP, Python, Sed, Text

Сіз \(n\) деңгейден тұратын ойынды өтіп жатырсыз. Әр деңгейдің өзіндік құндылығы \(b_i\) бар — ол оң немесе теріс болуы мүмкін. Деңгейден өткен сайын сіз осы құндылықты аласыз.

Ойын процесі келесі түрде жүреді:

  • әр деңгейде \(i\) сіз келесі деңгейге \(i+1\) өте аласыз,

  • немесе алға секіру жасап, \(1\)-ден \(a_i\) аралығындағы кез келген деңгейге өте аласыз (яғни \(i + j\), мұндағы \(1 <= j <= a_i\)).

Алайда мұндай секіру — шектеулі ресурс, сондықтан сіз бүкіл ойын барысында \(k\) реттен артық секіре алмайсыз.

Ойын \(n+1\) деңгейіне жеткенде аяқталады. Сіздің мақсатыңыз — секіру мүмкіндігін тиімді пайдалана отырып, алынатын ұпайдың жалпы сомасын максималды ету.

Енгізу

Бірінші жолда екі бүтін сан \(n\) және \(k\) — деңгей саны және рұқсат етілген секіру саны \((1 <= n, k <= 2000)\).

Екінші жолда \(n\) бүтін сан: \(a_1, a_2, \dots, a_n\) — әр деңгейден мүмкін болатын секіру ұзындықтары \((1 <= a_i <= n)\).

Үшінші жолда \(n\) бүтін сан: \(b_1, b_2, \dots, b_n\) — деңгейлердің құндылықтары \((-10^9 <= b_i <= 10^9)\).

Шығару

Бір бүтін сан — ойынды аяқтаған кезде алуға болатын максималды құндылық.

Мысалдар

Енгізу 1
5 2
3 2 4 1 2
10 -5 7 3 5
Жауап 1
25
Енгізу 2
4 1
2 1 1 1
5 6 7 8
Жауап 2
26
Енгізу 3
6 3
6 6 6 6 6 6
-10 -20 -30 5 6 7
Жауап 3
8

Ескертпелер

1-мысалға түсініктеме:

  • \(1\) деңгейде — \(2\) деңгей алға секіреміз, \(3\) деңгейге өтіп, \(10\) ұпай аламыз.

  • \(3\), \(4\), \(5\) деңгейлерінен жай өтеміз: сәйкесінше \(7\), \(3\) және \(5\) ұпай.

  • Жалпы ұпай: \(10 + 7 + 3 + 5 = 25\). Бұл — ең жақсы нәтиже.

2-мысалға түсініктеме:

  • Барлық деңгейлерде ұпайлар оң, сондықтан секіру жасаудың қажеті жоқ.

  • Барлық деңгейлерден кезекпен өткен дұрыс: \(5 + 6 + 7 + 8 = 26\).

3-мысалға түсініктеме:

  • \(1\) деңгейден бірден \(4\) деңгейге секіреміз (1 секіру жұмсалды).

  • \(4\), \(5\), \(6\) деңгейлерінен жай өтеміз: \(5 + 6 + 7 = 18\) ұпай.

  • Ал \(1\) деңгейдегі \(-10\) ұпайды ескерсек: \(-10 + 18 = 8\) ұпай.


Пікірлер

Қазіргі уақытта ешқандай пікір жоқ.