題面:
wind設計了很多機械人。但是它們都認為自己是最強的,於是,一場比賽開始了……機器人們都想知道誰是最敏捷的,於是它們進行了如下乙個比賽。首先,他們面前會有一排共n個數,它們比賽看誰能最先把每連續k個數中最大和最小值寫下來,當然,這些機械人運算速度都很,它們比賽的是誰寫得快。但是wind也想知道答案,你能幫助他嗎?
input:
每組測試資料
第1行為n,k(1<=k<=n<=100000)
第2行共n個數,為數字序列,所有數字均在int範圍內。
output:
共n-k+1行
第i行為第i~i+k-1這k個數中的最大和最小值
sample input:
5 31 2 3 4 5
sample output:
3 14 2
5 3solution:
線段樹維護區間最大值和區間最小值,再暴力查詢即可
要注意的是給出的數字可能為負數(在int範圍內)
code:
#includeusing namespace std;
int n,m,a[1000001];
struct sgttree[500001];
void build(int k,int l,int r)
int mid=(l+r)>>1;
build(k<<1,l,mid);build(k<<1|1,mid+1,r);
tree[k].minn=min(tree[k<<1].minn,tree[k<<1|1].minn);
tree[k].maxn=max(tree[k<<1].maxn,tree[k<<1|1].maxn);
}int query_min(int l,int r,int l,int r,int k)
int query_max(int l,int r,int l,int r,int k)
}t;inline int read()
while(isdigit(ch))
return x*f;
}int main()
最敏捷的機械人
題目描述 wind 設計了很多機械人。但是它們都認為自己是最強的,於是,一場比賽開始了 機器人們都想知道誰是最敏捷的,於是它們進行了如下乙個比賽。首先,他們面前會有一排共 n 個數,它們比賽看誰能最先把每連續 k 個數中最大和最小值寫下來,當然,這些機械人運算速度都很快,它們比賽的是誰寫得快。但是 ...
loj 10120 最敏捷的機械人
題目描述 wind 設計了很多機械人。但是它們都認為自己是最強的,於是,一場比賽開始了 機器人們都想知道誰是最敏捷的,於是它們進行了如下乙個比賽。首先,他們面前會有一排共 n 個數,它們比賽看誰能最先把每連續 k 個數中最大和最小值寫下來,當然,這些機械人運算速度都很快,它們比賽的是誰寫得快。但是 ...
1542 例 2 最敏捷的機械人
題目描述 wind 設計了很多機械人。但是它們都認為自己是最強的,於是,一場比賽開始了 機器人們都想知道誰是最敏捷的,於是它們進行了如下乙個比賽。首先,他們面前會有一排共 n 個數,它們比賽看誰能最先把每連續 k 個數中最大和最小值寫下來,當然,這些機械人運算速度都很快,它們比賽的是誰寫得快。但是 ...