給你乙個長度為n的陣列,乙個長為k的滑動的窗體從最左移至最右端,你只能見到視窗的k個數,每次窗體向右移動一位,如下表:
你的任務是找出視窗在各位置時的max value,min value.
input
第1行n,k,第2行為長度為n的陣列
output
2行,第1行每個位置的min value,第2行每個位置的maxvalue
sample input
8 31 3 -1 -3 5 3 6 7
sample output
-1 -3 -3 -3 3 3
3 3 5 5 6 7
const
maxn=1000000;
varn,m,i:longint;
a:array[1..maxn] of longint;
ma,mi:array [1..maxn] of longint;
procedure dmax(var x,dx:longint);
varj:longint;
begin
x:=-maxlongint;
forj:=i-m+1 to i do
begin
ifa[j]>=x then
begin
x:=a[j];
dx:=j;
end;
end;
end;
procedure dmin(var y,dy:longint);
varj:longint;
begin
y:=maxlongint;
forj:=i-m+1 to i do
begin
ifa[j]<=y then
begin
y:=a[j];
dy:=j;
end;
end;
end;
procedure init;
var j,x,y,dx,dy:longint;
begin
read(n,m);
fori:=1 to n do
read(a[i]);
i:=m;
dmax(x,dx); dmin(y,dy);
ma[i]:=x; mi[i]:=y;
fori:=m+1 to n do
begin
ifdx<=i-m then dmax(x,dx);
ifdy<=i-m then dmin(y,dy);
ifa[i]>=x then
begin
x:=a[i];
dx:=i;
end;
ifa[i]<=y then
begin
y:=a[i];
dy:=i;
end;
ma[i]:=x; mi[i]:=y;
end;
end;
procedure main;
begin
fori:=m to n do
write(mi[i],'');
writeln;
fori:=m to n do
write(ma[i],'');
end;
begin
init;
main;
end.
培訓第二天
在這裡的日子算是有了乙個不錯的開頭,我享受並且鍾意於這樣的日子,且期望自己能夠在這樣的生活中有所成長,有所收穫。早上七點的鬧鐘,在學校作為起床困難戶的我換了個環境之後並不怎麼抗拒這個時間,起得早神清氣爽不是說說而已的。起床之後刷牙洗臉準備完畢,背上電腦 電腦放在書包裡,因為還要帶鍵盤 就差不多了,出...
上機第二題
題目 2 陣列與函式的綜合應用 已知 int a 5 b 5 編寫程式查詢陣列中是否存在某個指定元素 將陣列a和陣列b中的素數不重不漏地合併到 乙個vector容器c中,然後按照下標訪問的方式手動對容器c中的資料,按從小到大順序重新 排序。要求依次實現 編寫順序查詢法函式和折半查詢法函式,分別在陣列...
濟南培訓第二天
首先,了解到了乙個大訊息,那就是今年noip命題負責人換了,所以,這個考試的風格也會發生變化,比如今年預賽就出現了某些奇怪的東西 網路流 所以,有時間,咱們還是把這個看看吧!今天還講了treap。還講了素數篩法,但是對我似乎沒什麼用 因為我每次都用,已經很熟練了 下面,再提一些可能有用的知識點 什麼...