STL_A1056マウスおよびライス(25分)

https://pintia.cn/problem-sets/994805342720868352/problems/994805419468242944

/ * 
*キューを使用して、FIFOは
*変数の定義は、意味のあるものにする
*プロモーションルールを開発し、ランク付け
* / 
書式#include <iostreamの>
 使用して 、名前空間、STD 
の#include <cstdioを> 
する#include <キュー>
 のconst  int型 MAXN = 1010 ; 

構造体マウス{
     int型の重量を、
     INT ランク; 
}マウス[MAXN]; 

int型のmain(){
       int型の数、ハタ、順序; 
      scanfの(" %のDの%のD "、&ナンバー、およびハタ)
       のためにint型 I = 0 ;私は<数; I ++){ 
        scanf関数(" %のD "、&マウス[I] .weight)。
      } 
      キュー < int型 > キュー。
      以下のためにint型 i = 0 ; iは番号を<; iは++ ){ 
        scanf関数(" %のD "、および順序)。
        queues.push(オーダー)
      } 
      int型 TEMP = 番号、基;
      一方、(!queues.size()= 1 ){
         場合(TEMP%ハタ== 0)群= TEMP / ;ハタ
        他のグループ=一時/ハタ+1 ;
        以下のためにint型 i = 0 ; iはグループ<; iは++ ){
             int型 maxmouse = queues.front()。
            以下のためのint型 J = 0 ; jの<ハタ; J ++ ){
                 // 最后一组老鼠不足ハタ时退出循环
                場合(私はハタ+ J *> = TEMP)休憩をINT前線= queues.front()。
                もし(マウス[フロント] .weight> マウス[maxmouse] .weight){ 
                    maxmouse = 前線。
                } 
                マウス[前線] .ranksグループ+ = 1 ; // ランクマウスホイール1 +グループ。
                queues.pop(); 
            } 
            queues.push(maxmouse); // ラット勝利カット
        } 
        TEMP =基; // 次のラウンドのグループのマウス
      }
       // ときキューつのみマウス、ランク付けを行うために1。 
      マウス[queues.frontは()]ランク= 1 ;
       のためのint型 I = 0 ; Iは数<I ++は{)
        のprintf(" %のD " 、マウス[I] .ranks);
         IF(I <number- 。1)のprintf("  ")。
      } 
    戻り 0 
}

おすすめ

転載: www.cnblogs.com/2o2o/p/11371354.html