Решение задачи Баскетбольная зарядка с Codeforces

Без пояснения   Просмотров: 34


В ЛКШ наконец-то появилось поле для игры в баскетбол, и на радостях Демид решил провести баскетбольную зарядку. На зарядку к Демиду пришло 2⋅n человек, и он построил их в два ряда по n человек в каждом. В каждом из рядов он пронумеровал игроков от 1 до n слева направо.
Теперь Демид хочет выбрать команду для игры в баскетбол. Он будет выбирать игроков слева направо, и номер каждого следующего взятого игрока будет строго больше, чем предыдущего взятого. А для того, чтобы не отдавать предпочтения одному из рядов, каждый следующий выбранный школьник должен стоять не в том же ряду, что предыдущий. Первый выбранный школьник может быть любым из всех 2n, а количество игроков в команде не ограничено.

Демид считает, что команда тем лучше, чем больше суммарный рост ее игроков. Помогите Демиду определить максимальный суммарный рост игроков команды, которую он может выбрать.

Код

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,a[2][100001],f[2][100001];
int main()
{
	//scanf("%d",&n);
	cin>>n;
	for(int k = 0; k < 2;k++)
		for(ll i = 1; i <= n; i++)
		  cin >> a[k][i];
	for(ll i = 1; i <= n; i++)
		for(int k = 0; k < 2; k++)
			f[k][i] = max(f[k][i - 1],f[1 - k][i - 1] + a[k][i]);
	cout << max(f[0][n],f[1][n]);
}

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться