B.新年とアセントシーケンス
問題の意味:アセント上昇シーケンスの定義、シーケンスAのセットは、1 <I <J <N、ように愛<Ajとがあります。今n個のシーケンスを与え、N N ^ 2配列の組み合わせの2つの配列の組み合わせを見つけ、組み合わせの数は、アセント配列です。。
思考2つのMAX、MINアレイは、最大値と最小値の各シーケンスの最大値とソートを記録されています。再びたびに2分間、アレイ内の各列の最大値と最小値は、数がそれより大きい全ての数値を見つけるために、このような組合せの新しいシーケンスが満たさアセント特性です。この配列はアセントの性質自体を満たした場合には、最大値を直接9999999設定され、最小値にデポジットが-1に設定されています。
ACコード:
1の#include <iostreamの> 2の#include <ベクトル> 3の#include <CStringの> 4の#include <マップ> 5の#include <アルゴリズム> 6 使って 名前空間STDを、 7ベクター< INT > MAX。 8ベクトル< 整数 > MIN。 9 INT メイン(){ 10 のint T。 11 cinを>> トン。 12 のために(INTは iは= 0 ; I <T、I ++ ){ 13 int型の長さ; 14 CIN >>長さ; 15 長い 長い分= 999999999 。 16 長い 長い最大= - 1 。 17 int型の OK = 0 ; 18 のための(int型 J = 0 ; J <長J ++ ){ 19 長い 長CUR。 20 cinを>> CUR。 21 であれば(CUR>最小&& OK == 0 ){ 22 OK = 1 。 23 } 24 分= 分(分、CUR)。 25 マックス= MAX(最大、CUR)。 26 } 27 であれば(OK == 0 ){ 28 MAX.push_back(最大)。 29 MIN.push_back(MIN)。 30 } 31 他{ 32 MAX.push_back(9999999 )。 33 MIN.push_back( - 1 )。 34 } 35 } 36 ソート(MAX.begin()、MAX.end())。 37の 長い 長い ANS = 0 。 38 のために(INT iが= 0 ; I <T、I ++ ){ 39の ANS + =(MAX.end() - UPPER_BOUND(MAX.begin()、MAX.end()、MIN [I]))。 40 // coutの<< ANS <<てendl; 41 } 42 COUT << ANS。 43 リターン 0 。 44 }