题解CF546C【兵士とカード】

考え

水が問題である、あなたは、キュー内の完成の要素を取得しないように注意して、書き込み+キューにシミュレーションを使用することができます!

コード

1の#include <iostreamの>
 2の#include <cstdioを>
 3の#include <キュー>
 4  使って 名前空間STDを、
5  のconst  int型 MAXN = 1000000 + 5 6  のint main()の
 7  {
 8      INT N。
9      CIN >> N。
10      キュー< int型 >。// 队列
11      キュー< int型 > B;
12      INT X、Y。
13      CIN >> X。
14      のためのint型 i = 0 ; iはXを<; iは++ 15          {
 16              INT Xと、
17              cinを>> X;
18              a.push(X)。
19          }
 20      CIN >> Y。
21      のためにint型 I = 0 ; iがyと<; Iは++ 22          {
 23              のint Y。
24              CIN >> Y。
25              b.push(Y)。
26          }
 27      int型の和= 0//工程数記録
28      BOOLフラグ=で0 ; //はゲームおよびエンド勝ち負けか否かを判定する
29を         一方(SUM <= MAXN)
 30          {
 31は、             INT U = a.front(); a.pop();
 32              int型 V = b.front (); b.pop();
 33である              SUM ++ ;
 34は、             IF(U> V)
 35              {
 36                  a.push(V); // VよりU-大きく
37 [                  a.push(U);
 38である             }
 39              
40              {
 41                 b.push(U); // U-V比H 
42である                 b.push(V);
 43である             }
 44は、             IF(a.size()== 0 && b.size()== 0// OVER GAME 
45                  BREAK 46で             IF(a.size()== 0 47              {
 48                  のprintf(" %D%D \ N- "、SUM、2 );
 49                  フラグに= 1 ;
 50              }
 51れる             IF(b.size()== 0 52              {
 53                  のprintf(" %D%D \ n "、和、1 )。
54                  フラグ= 1 55              }
 56              であれば(フラグ== 1ブレーク57          }
 58          であれば(フラグ== 0)のprintf(" -1の\ n " );
59      リターン 0 ;
60 }

それは単純ではないですか?

おすすめ

転載: www.cnblogs.com/edenhazardhty/p/11360887.html