中山培訓第二題 2016 7 7

2021-07-14 13:31:35 字數 1734 閱讀 5500

給你乙個長度為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。還講了素數篩法,但是對我似乎沒什麼用 因為我每次都用,已經很熟練了 下面,再提一些可能有用的知識點 什麼...