あなたの長さn、[N](50000≤1≤N)、クエリQのシーケンスを与えるために(1≤Q≤200000)回出力[L、R]の最大値と最小間隔との差です。
そう簡単に〜
そう簡単に〜
そう簡単に〜
入力
ケースの複数組
二つの整数N、Qの最初の行
およびN [i]は[i]は1E9未満であることを確実にする数であります
各Qは、その後、あなたにLを依頼され、Rは、確保するため、(1 <= L <= R <= N)
出力
最大値と最小間隔との間の各質問[L、R]の差の出力は、数あります
サンプル入力
6 3 1 7 3 4 2 5 1〜5 4 6 2 2
サンプル出力
6 3 0
書式#include <iostreamの> の#include <アルゴリズム> 書式#include <cstdioを> する#include < 文字列 > の#include <CStringの> の#include <cstdlib> 書式#include <マップ> 書式#include <ベクトル> の#include < 設定 > 書式#include <キュー> 書式#include <スタック> の#include <cmath> typedefの長い 長いLL。 #define PQL PRIORITY_QUEUE <LL> の#define PQ PRIORITY_QUEUE <整数> の#define Vベクトル<整数> #define LSONインデックス<< 1、L、中間 の#define rsonインデックス<< 1 | 1、中間+ 1、R用 の#define読み取る(X)のscanf( "%dの"、およびX) の#define LREAD(X)のscanf(」 %のLLD」、&x)は、 #define PT(X)のprintf( "%d個の\ n"、(X)) の#defineイエスのprintf( "YES \ n"); #defineなしのprintf( "NOの\ n"); #define GCD __gcd の#define CN CIN >> の#define CT COUT << の#define ED << ENDL用 の#define担当者(J、K)のための(INT I =(INT)〜(j)は、iが<=(INT)(K ); iは++) の#define入力(k)に対する(INT i = 1; i)は=(INT)(kは<; iは++){CIN >> [I]。} の#define MEM(S、 OKリターン0; #defineリターン再; #define TLEのstd ::イオス:: sync_with_stdio(偽); cin.tie(NULL); cout.tie(NULL); #define MOD(x)は、((X)%9973) の#define試験COUT << "++++++" << ENDL。 #define LCインデックス<< 1つ の#define RC指数<< 1 | 1 使用して 名前空間はstdを、 const int型 MX = 1000005 ; int型トン、ANS、MAXN = -MX、ミネソタ州= MX。 typedef 構造体ノードは { int型のVal、L、R、MX、MN、怠惰、和を、 }ノード; ノードDP [MX]。 INT [MX]。 無効アップ(int型インデックス) { DP [インデックス] .MX = MAX(DP [LC] .MX、DP [RC] .MX)。 DP [インデックス] .mn = 分(DP [LC] .mn、DP [RC] .mn)。 } ボイドビルド(int型のインデックス、int型の L、INT R) { DP [インデックス] .L = L。 DP [インデックス] .R = R。 もし(L == R) { DP [インデックス] .MX = [L]。 DP [インデックス] .mn = [L]。 再; } INT半ば=(L + R)>> 1 。 (LC、L、ミッド)を構築。 (RC、中旬を構築+ 1 、R)。 (インデックス)まで。 } ボイドクエリ(int型のインデックス、int型の L、INT R) { // もし(DP [ルート] .MX <=ミネソタ州&& DP [ルート]の.mi> = MAXN)再。 もし(DP [インデックス] .L> = L && DP [インデックス] .R <= R) { MAXN = MAX(DP [インデックス] .MX、MAXN)。 ミネソタ州 = 分(DP [インデックス] .mn、ミネソタ州)。 再; } INT半ば=(DP [インデックス] .L + DP [インデックス] .R)>> 1 。 もし(L <= MID) { クエリ(LC、L、R)。 } もし、(R>MID) { クエリ(RC、L、R)。 } } int型のmain() { TLE。 INTのN、K、LL、RR。 一方、(CNのN >> K) { 担当者(1 、N)CN [I]。 ビルド(1、1 、N) 担当者(1 、K) { MAXN = - 1、ミネソタ州= 1E9 + 5 。 CIN >> LL >> RR。 クエリ(1 、LL、RR)。 coutの << MAXN、ミネソタ州<< てendl; } } OK。 }