CCF - 201703から2人の学生がラインアップ

問題の説明
  体育の先生ボブは順番に、クラスのラインアップで彼の学生を保存します。彼は最初の学生が行、前に立っている学校の数が少ないし、その後調整し、数回に大量の注文に小さなから数字を学ぶことができます。調整はある程度の距離のために前方または後方に移動し、キューに挿入され、チームのうち、学生暁明を可能にすることができます。
  例えば、以下は、モバイルのグループ、例えば8のための高校生の数の例を示します。
  0)開始キュー学校高校生が番号1、2、3、4、5、6、7、8であった;
  1)第1の調整、コマンドが"3番が後退する学生2"、学生3の数を表します。キューに挿入された2人の学生、チーム、後退距離は、新しいキュー番号学校高校生は1、2、4、5、3、6、7、8であった;
  2)第2調整コマンド「3~8学生が前進」、第8号は、新しいキュー番号学校高校生は、1、2、4、5、8た、学生が前方に3人の学生を移動するからデキューし、次にキューに挿入示し3、6、7;
  3)第3の調整コマンドが「前進学生3 2」、3は、生徒が前進2人の学生からデキューであり、次いでキュー、新しいキュー・生徒に挿入学生番号1、2、4、3、5、8、6、7続きます。
  暁明は、全ての調整過程を記録し、最終的にフロントのすべての学生が多数を習得するためにバックアップすることはどのくらいあるのでしょうか?
  移動プロセスに関与する数は、学生数ではなく、チームの位置を指していることに特に注意してください。後退するときバック学生への学生の対応に正確に等しい後退距離の数が最後尾キューを移動する場合、移動距離は、後の生徒の対応する数を超えません。前方に移動する場合は、学生への学生の前で対応する距離と正確に一致前進の数は、キューの先頭に移動する場合、移動距離は、学生たちの前に対応する数を超えることはできません。
入力形式
  入力整数の最初の行を含む nは 、1から学生の数、生徒の生徒数を表す n個の 数値。
  第二行は、整数含ま mは 、調整の数を示します。
  二つの整数P、Q、Qが正の場合、pは、移動Q後方高校生の数を表し、qが負である場合、pは前進-q学校の生徒の数を表し、次のm行。
出力フォーマット
  すべての学生に前後に、スペースで区切られた2つの隣接する整数の間に、n個の整数を含む出力ラインは、最終的な生徒の数を表します。
サンプル入力
8
3
3 2
8 -3
3 -2
サンプル出力
1 2 3 4 5 6 7 8
評価尺度の例とで合意
  評価では、すべてのユースケース,.≤1  のn  ≤≤1000,1  メートル  1000年≤は、すべての有効なモバイルです。
 
コード:
#include <iostreamの>
 使用して 名前空間STD、

INT {()メイン
     INT N-、M;
     INT A [ 1001 ]; // 学校の数に対応するチーム位置 
    CIN >> N-;
     INT STMAP [ 1001 ]; // に対応する生徒数チームの位置
    のためのINT I = 1 ; I <= N; I ++は
    { 
        [I] = I; 
        STMAP [I] = I; 
    } 
    
    CIN >> M;
     int型のC、B、
    
    一方(M-- 
    { 
        CINC >> B;
         INT X = STMAP [C]; // 現在位置C学生番号を見つけるには、ランク
        INT Y = X + B; // 位置を入れ替えることが見出さ
         // ヘッドとテールチームより調整ケース
        IF <(Y 1 
        のY = 1 ;
          IF(Y> N-)
        Y = N-; 
        
        // スワップ位置が
        
         int型 Tは= [X]を;
          // x位置のランク学生が前方に移動するため、中間学生後退
        IF(X> Y)
        { 
            
            ためint型 I> = Y +; I = Xを。1 ; i--
            {
                STMAP [A [I Y。 - 1 ] = + 1。; 
                [I] = A [I- 1 ]; 
            } 
            
        } そう IF(Y> X)
        { 
        // チーム位置後方X学生に、中間学生1つ前に移動する
            ためのint型 ; I <= Y- I = Xを1 ; Iは++ 
            { 
                STMAP [A [Iが + 。1 - =]を1 
                [I] = A [Iが+ 。1 ;] 
            } 
        
        } 
        
            STMAP [Tを] = =
            [Y] T。
    } 
    のためにint型 I = 1を iが++; iが<= N 
    { 
        COUT << [I] << "  " 
    } 
    戻り 0 
}

 

おすすめ

転載: www.cnblogs.com/ellen-mylife/p/11260657.html