Soldier and Cards

老样子,直接上国语吧

 Descriptions:

两个人打牌,从自己的手牌中抽出最上面的一张比较大小,大的一方可以拿对方的手牌以及自己打掉的手牌重新作为自己的牌,放在自己手牌的最下方,而且对方输掉的那张手牌需要放在上面,自己赢的手牌放在下面。

Input

第一行的数n代表一共有几张牌

第二行第一个数x代表第一个人有x张牌

第三行第一个数y代表第二个人有y张牌

Output

第一个数代表进行了几轮,第二个数代表谁赢

Examples

Input
4
2 1 3
2 4 2
Output
6 2
Input
3
1 2
2 1 3
Output
-1

题目链接:

https://vjudge.net/problem/CodeForces-546C

我的做法可能有点偏了,因为不知道有几个牌,就用vector存一下,然后每次拿出双方的第一张牌进行比较,再进行模拟,现在想想可以用queue来写,当时写的有点粗糙,但是思路很清晰,一遍就AC了

AC代码

#include <iostream>
#include <cstdio>
#include <fstream>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#include <sstream>
#define mod 1000000007
#define ll long long
#define INF 0x3f3f3f3f
using namespace std;
vector<int>a;
vector<int>b;
int n;
int f,flag=;
int x,y;
int sum=;
int main()
{
cin >> n;
cin >> x;
for(int i=; i<x; i++)
{
int num;
cin>>num;
a.push_back(num);
}
cin>>y;
for(int i=; i<y; i++)
{
int num;
cin>> num;
b.push_back(num);
}
while(!a.empty()&&!b.empty())//两人的卡牌都不为空
{
sum++;
int num1=a.front();//都取出第一张卡牌进行比较
int num2=b.front();
if(num1>num2)//1号大于2号就把2号和自己的卡牌一次放在队尾
{
a.push_back(num2);
a.push_back(num1);
vector<int>::iterator t1=a.begin();
vector<int>::iterator t2=b.begin();
a.erase(t1);
b.erase(t2);
}
if(num2>num1)//2号大于1号就把1号和自己的卡牌一次放在队尾
{
b.push_back(num1);
b.push_back(num2);
vector<int>::iterator t1=a.begin();
vector<int>::iterator t2=b.begin();
a.erase(t1);
b.erase(t2);
}
if(!b.empty())//谁的卡牌为空谁就输了
f=;
if(!a.empty())
f=;
if(sum>=n*n*n*n*n*n)//判断一下,要是循环这么多次还没分出胜负,应该就是死循环了
{
flag=;
cout<<"-1"<<endl;
break;
}
}
if(flag)
cout<<sum<<" "<<f<<endl;
return ;
}

最新文章

  1. 如何将本地文件上传到github托管
  2. java:利用xpath删除xml中的空节点
  3. 四、saltstack如何管理对象?
  4. 私有虚函数的特点(C++和Java的机制还有所不同)
  5. 应用apache FileUtils把网页另存为文件
  6. mysql查看表的结构
  7. Android中TextView输入字数统计和限制
  8. 在C#中实现Socket端口复用
  9. Contest - 第10届“新秀杯”ACM程序设计大赛网络资格赛 赛后信息(晋级名单&#183;正式版)
  10. 程序员眼中的UML
  11. Windows 注册和取消注册一个dll或者ocx
  12. .Net3月份开发札记
  13. 【ASP.NET MVC】jqGrid 增删改查详解
  14. Hadoop HDFS, YARN ,MAPREDUCE,MAPREDUCE ON YARN
  15. Vuejs的一些总结
  16. poj1860
  17. day022 python (re模块和 模块)
  18. vue写后台管理系统问题概述和解决方案
  19. &amp;lt;十一&amp;gt;读&amp;lt;&amp;lt;大话设计模式&amp;gt;&amp;gt;之抽象工厂模式
  20. Windows 消息机制浅析

热门文章

  1. JSON JavaScriptSerializer 字符串的长度超过了为 maxJsonLength 属性设置的值。
  2. 怎样搭建svn本地server,管理本地的代码
  3. Handler之IdleHandler
  4. POJ 1182 食物链(并查集)
  5. Linux 常用命令 (备忘)
  6. hdu 1757 A Simple Math Problem (矩阵高速幂)
  7. spring 相关博客
  8. 内核添加dts后,device和device_driver的match匹配的变动:通过compatible属性进行匹配【转】
  9. 【selenium】常见问题
  10. LibSVM学习详细说明