內容 : 正體->简体
有一個很古怪的老闆,他有N名員工,每個人有自己的薪水,這個老闆很喜歡去找出編號第A到編號到B之間的最高薪水與最低薪水的差,但是你以為他只找一次嗎?當然不是,他有強迫症,他每隔1秒就隨機寫兩個數字,然後找出這段數字裡最多薪水的錢,並寫下來作成紀錄。
老闆每次都要他的秘書幫他找,他的秘書受不了,想請你幫她寫一個程式讓他可以很迅速的找到,在這區間最高薪水與最低薪水的差是多少錢, 好讓他可以輕鬆一下。
輸入說明 :
第一行有兩個數字N(1 ≤ N ≤ 50,000), Q (1 ≤ Q ≤ 200,000) 代表有N名員工跟Q個問題。
接下來有 N行代表第1~N名的員工薪水。
在接下來的Q行有兩個數字 a,b
"(0 < a < = b < = n)" 代表老闆寫的兩個數字,請你找出這段區間的最高薪水與最低薪水的差。
輸出說明 :
對於每一個問題,印出最高薪水與最低薪水的差為何?並換行。
範例輸入 :
6 3
1
7
3
4
2
5
1 5
4 6
2 2
範例輸出 :
6
3
0
Dim worker(), question1(), question2() As Integer
回覆刪除Private Sub Form_Load()
Me.Hide
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Input #1, employee, questions
ReDim worker(employee)
ReDim question1(questions)
ReDim question2(questions)
For i = 1 To employee
Input #1, worker(i)
Next
For ii = 1 To questions
Input #1, question1(ii), question2(ii)
Next
For iii = 1 To questions
Max = 0
Min = 9999
For iiii = question1(iii) To question2(iii)
If worker(iiii) > Max Then Max = worker(iiii)
If worker(iiii) < Min Then Min = worker(iiii)
Next
Print #2, Abs(Max - Min)
Next
Close #2
Close #1
End
End Sub
Dim a(), g, s As Integer
回覆刪除Private Sub Form_Load()
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Input #1, n, m
ReDim a(Val(n))
For i = 1 To Val(n)
Input #1, x
a(i) = Val(x)
Next i
For i = 1 To Val(m)
Input #1, y, z
g = 999: s = 0
For j = Val(y) To Val(z)
If a(j) > s Then s = a(j)
If a(j) < g Then g = a(j)
Next j
Print #2, s - g
Next i
Close #2
Close #1
End
End Sub