时间限制: 1 Sec 内存限制: 64 MB
提交: 100 解决: 23
[提交][状态][讨论版]题目描述
有2*N个数排成一行( 1 <= N <= 10000 ),计算机和人轮流取数,要求只能从两端取,每次取一个,计算机先取。最后谁取到的所有数的和大谁就赢,如果相等是计算机赢,问计算机有无必胜的策略,如有那计算机取到的所有数的和是多少?
输入
* 第1行:一个整数N ( 1 <= N <= 10000 ) * 第2行:空格隔开的2*N个整数X_i ( 0 <= X_i <= 10000000 )
输出
第1行:如果计算机有必胜的策略,则输出'Y'和所有数的和,否则输出'N'。
样例输入
1 9 8
样例输出
Y 9
提示
解析:观察一下会发现,第一个取数的可以总取到奇数(或偶数)编号的数,因此,只需把所有奇数和偶数编号的数累加,比较大小即可,因此有必胜策略。

code
#include<iostream>
#include<algorithm>
using namespace std;
long long odd,even;
int main()
{
int n,i,x,y;
cin>>n;
for (i=odd=even=0;i<n;i++)
{
cin>>x>>y;
odd+=x;
even+=y;
}
cout<<"Y "<<max(odd,even)<<endl;
//system("pause");
return 0;
}
posted on 2012-08-19 20:09
龙在江湖 阅读(421)
评论(0) 编辑 收藏 引用 所属分类:
基础