CODEFORCES --- 381A. Sereja and Dima

381A. Sereja and Dima

Sereja 和 Dima 在玩一个游戏。游戏规则非常简单。玩家有一排 n 张牌。每张牌上都有一个数字,牌上的所有数字都是不同的。玩家轮流出牌,Sereja 先出牌。在他的回合中,玩家可以拿一张牌:要么是一排中最左边的牌,要么是最右边的牌。当没有牌时,游戏结束。游戏结束时,牌上数字总和最大的玩家获胜。

Sereja 和 Dima 都很贪心。他们每个人在移动过程中都会选择数字较大的牌。

Inna 是 Sereja 和 Dima 的朋友。她知道这两个人使用的是哪种策略,因此她想根据游戏的初始状态来确定最终得分。请帮助她。

输入

第一行包含整数 n(1 ≤ n ≤ 1000) - 牌桌上的牌的数量。第二行包含从左到右以空格分隔的纸牌上的数字。纸牌上的数字是从 1 到 1000 的不同整数。

输出

在一行中打印两个整数。第一个数字是比赛结束时 Sereja 的积分,第二个数字是比赛结束时 Dima 的积分。

例如

输入

4
4 1 2 10

输出

12 5

输入

7
1 2 3 4 5 6 7

输出

16 12

注意

在第一个示例中,Sereja 将拿编号为 10 和 2 的牌,因此 Sereja 的和为 12 。迪玛将取数字为 4 和 1 的牌,因此迪玛的和为 5 。

解决方法

// codeforces
// 381A. Sereja and Dima

# include<iostream>
# include<vector>
using namespace std;
void delete_num(int a[], int k,int b)
{
	for(int i = k; i < b; i++)
	{
		a[i] = a[i+1];
	}
}
int main()
{
	int n, flag = 0, s=0, d=0, x, b, e;
	cin >> n;
	int a[n];
	for(int i = 0; i < n; i++)
	{
		cin >> a[i];
	}
	for(int i = 0; i < n; i++)
	{
		if(flag == 0)
		{
			if(a[0] > a[n-i-1])
			{
				s = s + a[0];
				delete_num(a, 0, n-i);
			}
			else
			{
				s = s + a[n-i-1];
				delete_num(a, n-i-1, n-i);
			}
			flag =1;
		}
		else
		{
			if(a[0] > a[n-i-1])
			{
				d = d + a[0];
				delete_num(a, 0, n-i);
			}
			else
			{
				d = d + a[n-i-1];
				delete_num(a, n-i-1, n-i);
			}
			flag = 0;
		}
		
	}
	cout << s << ' ' << d << endl;
	return 0;
}
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值