Codeforcesラウンド#555(DIV。3)F.最大バランスサークル(思维)

トピックリンクします。http://codeforces.com/contest/1157/problem/F

イタリアのこと:n個の要素を含む配列内の要素を選択し、そのような環を構成する要素のほとんどは(リング要素は差の隣接絶対値を満たす<= 1)

コレクションの要素との最初の契約は、各要素の出現回数、およびソートし、重複排除のコレクションを数えます。

このようなリング構成は、ケースなければならないため:最初の要素の値が増加し、その後減少し、上昇し、逆の要素の要素の立ち下がり、

私たちは、このようなリングを構築する場合ので、私たちが出現> = 2つの要素、余分な部分2つの上昇完全放電側要素を探します、要素が1滴です

書式#include <iostreamの> 
の#include <CStringの> 
の#include <アルゴリズム> 
書式#include <cmath> 
の#include <cstdioを> 
する#include <キュー> 
の#include <climits> 
書式#include < 設定 > 
書式#include <スタック> 
の#include < 文字列 > 
書式#include <マップ> 
書式#include <ベクトル>
 の#define 0x3f3f3f3f INF
 使用して 名前空間はstdを、
typedefの長い 長いLL。
  静的 constの LLのMod = 2009 ;
int型[MAX_N]を、CNT [MAX_N]。
ボイド)(解決{
 //     freopenは( "INPUT.TXT"、 "R"、STDIN)。
//     freopenは( "output.txtと"、 "W"、STDOUT); 
    int型のk;
    一方、(scanf関数(" %dの"!&K)= EOF){
         ためint型 i = 0 ; iはMAX_Nを<; ++ I)CNT [I] = 0 ;
        以下のためにint型 i = 0 ; iは、kは<; ++ I){ 
            scanf関数(" %dを"[I]); 
            CNT [A [I] ++ ; 
        } 
        ソート(A、A + K);
         INT TOT = UNIQUE(A、K用+) - ; // 単調増加、構築することが便利
        INT ANSlを= 0、ANSR = 0、ansle = CNT [A [ 0 ];
         のためのint型 I = 0 ; IはTOTを<I = Jを{J)
            Jが =私は+ 1 INTル= CNT [A [I] ];
             一方(J <TOT && A [J] - [J - 1 ] == 1 && CNT [A [J]]> = 2)ル+ = CNT [J ++ ]。
            int型の R = J - 1 もし(J <TOT && [J] - [J - 1 ] == 1)、R = Jル+ = CNT [J]。
            もし(LE> ansle)ansle =ル、ansl = I、ANSR = R。
        } 
        のprintf(" %d個の\ n " 、ansle)。
        もし(ansl == ANSR){
             ためint型 i = 0 ; I <ansle; ++ I)のprintf(" %d個の%のC "、[ansl]、I == ansle - 1' \ n ''  ' );
             続行; 
        } 
        ためint型 I = 0 ; I <CNT [A [ANSl]; ++ I)のprintf(" %のD "、Aは[ANSl]);    // 上昇開始点
        のためのint型 I ANSl + = 1 ; I <ANSR; ++ I){
             ためINT J = 1。 ; J <CNT [A [I]]; J ++)のprintf(" %のD "、A [I]); // ドロップ要素を残す
        }
         ためINT I = 0; 私はCNTを<[ANSR]。++ I)のprintf(" %dの"、[ANSR])。   // 升序终点
        ためINT I = ANSR - 1 ; i>をansl; --I)のprintf(" %dの" 、[I])。
        putchar(' \ nを' ); 
    } 
} 
int型のmain(){ 
    )(解きます。
    リターン 0 ; 
}
コードの表示

 

おすすめ

転載: www.cnblogs.com/xorxor/p/10963738.html