码迷,mamicode.com
首页 > 其他好文 > 详细

queue+模拟 Codeforces Round #304 (Div. 2) C. Soldier and Cards

时间:2015-05-26 15:58:56      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

 

题目传送门

 1 /*
 2     题意:两堆牌,每次拿出上面的牌做比较,大的一方收走两张牌,直到一方没有牌
 3     queue容器:模拟上述过程,当次数达到最大值时判断为-1
 4 */
 5 #include <cstdio>
 6 #include <iostream>
 7 #include <algorithm>
 8 #include <cstring>
 9 #include <string>
10 #include <stack>
11 #include <cmath>
12 #include <queue>
13 using namespace std;
14 
15 const int MAXN = 20;
16 const int INF = 0x3f3f3f3f;
17 int x[MAXN];
18 queue<int> Q1;
19 queue<int> Q2;
20 
21 int main(void)        //Codeforces Round #304 (Div. 2) C. Soldier and Cards
22 {
23     int n, m1, m2;
24     while (scanf ("%d", &n) == 1)
25     {
26         while (!Q1.empty ())    Q1.pop ();
27         while (!Q2.empty ())    Q2.pop ();
28 
29         int x;
30         scanf ("%d", &m1);
31         for (int i=1; i<=m1; ++i)
32         {
33             scanf ("%d", &x);    Q1.push (x);
34         }
35 
36         scanf ("%d", &m2);
37         for (int i=1; i<=m2; ++i)
38         {
39             scanf ("%d", &x);    Q2.push (x);
40         }
41 
42         int cnt = 0;
43         while (!Q1.empty () && !Q2.empty ())
44         {
45             int x = Q1.front ();    int y = Q2.front ();
46             Q1.pop ();    Q2.pop ();
47             if (x < y)    {Q2.push (x);    Q2.push (y);}
48             else    {Q1.push (y);    Q1.push (x);}
49             ++cnt;
50             if (cnt == 10000)    break;
51         }
52 
53         if (cnt == 10000)    puts ("-1");
54         else
55         {
56             printf ("%d %d\n", cnt, (Q1.empty ()) ? 2 : 1);
57         }
58     }
59 
60     return 0;
61 }
62 
63 /*
64 4
65 2 1 3
66 2 4 2
67 3
68 1 2
69 2 1 3
70 */

 

queue+模拟 Codeforces Round #304 (Div. 2) C. Soldier and Cards

标签:

原文地址:http://www.cnblogs.com/Running-Time/p/4530591.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!