Hust oj 1945 纸牌小游戏(模拟水题)

阅读: 评论:0

Hust oj 1945 纸牌小游戏(模拟水题)

Hust oj 1945 纸牌小游戏(模拟水题)

纸牌小游戏
Time Limit: 1000 MSMemory Limit: 32768 K
Total Submit: 109(76 users)Total Accepted: 85(73 users)Rating: Special Judge: No
Description

小A和小B在玩纸牌游戏,游戏的规则是:

小A使用栈,小B使用队列,给出一个长度为n的数列,从数列左边到数列右边依次入栈/入队,其中穿插m次出栈/出队操作。

最后,谁栈(队列)中的所剩数字的总和大,谁就是winner。(保证最终有一人胜出)

Input


多组测试数据。

每组数据第一行有2个整数n,m(0<m<n<=1000)。

接下来是一个长度为n的整数序列(每个整数都在int范围内)。

接下来n+m行,每行都有下2个操作中的一个:

push 对于小A来说是入栈,对于小B来说是入队

pop  对于小A来说是出栈,对于小B来说是出队

Output

每组测试数据输出一个整数,小A赢了的话输出1,否则输出2。

Sample Input
5 3
3 5 9 4 2
push
pop
push
push
pop
push
push
pop
Sample Output
1
模拟
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<stack>
#include<queue>
#include<cstring>
using namespace std;const int Maxn = 1005;
int a[Maxn];
char str[5];
int n,m;int main()
{while(~scanf("%d%d",&n,&m)){stack<int>s;queue<int>q;int sum_1 = 0;int sum_2 = 0;int index = 0;for(int i=0;i<n;i++){scanf("%d",&a[i]);}for(int i=0;i<n+m;i++){scanf("%s",&str);if(strcmp(str,"push") == 0){int temp = a[index++];s.push(temp);sum_1 += temp;q.push(temp);sum_2 += temp;}else{sum_1 -= s.top();s.pop();sum_2 -= q.front();q.pop();}}if(sum_1 > sum_2)printf("1n");elseprintf("2n");}
}


本文发布于:2024-02-01 12:15:39,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170676094136527.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:小游戏   纸牌   Hust   oj
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23