和為給定數

2022-07-23 04:57:10 字數 1075 閱讀 1999

總時間限制:1000ms

記憶體限制:65536kb

描述給出若干個整數,詢問其中是否有一對數的和等於給定的數。

輸入共三行:

第一行是整數n(0 < n <= 100,000),表示有n個整數。

第二行是n個整數。整數的範圍是在0到10^8之間。

第三行是乙個整數m(0 <= m <= 2^30),表示需要得到的和。

輸出若存在和為m的數對,輸出兩個整數,小的在前,大的在後,中間用單個空格隔開。若有多個數對滿足條件,選擇數對中較小的數更小的。若找不到符合要求的數對,輸出一行no。

樣例輸入

4

2 5 1 4

6

樣例輸出
1 5
根據題目範圍,得出一定要開long long,而且為保證所有變數一致,所以全開。然後,很輕易地得出是二分查詢。

從1開始,一直到不大於m的最後乙個數,不停查詢。

查詢函式不解釋。

見**:

#include#include

using

namespace

std;

long

long n,left1,mid,right1,a[100001

];long

long

m,add;

bool

flag;

void fen(int

);bool cmp(int,int

);int

main()

if(flag==false

) cout

<<"no"

;

else

cout

<"

"

}void fen(int

s)

else

}}bool cmp(int c,int

b)

07 和為給定數

總時間限制 1000ms 記憶體限制 65536kb 描述給出若干個整數,詢問其中是否有一對數的和等於給定的數。輸入共三行 第一行是整數n 0 n 100,000 表示有n個整數。第二行是n個整數。整數的範圍是在0到10 8之間。第三行是乙個整數m 0 m 2 30 表示需要得到的和。輸出若存在和為...

07 和為給定數

總時間限制 1000ms 記憶體限制 65536kb 描述給出若干個整數,詢問其中是否有一對數的和等於給定的數。輸入共三行 第一行是整數n 0 n 100,000 表示有n個整數。第二行是n個整數。整數的範圍是在0到10 8之間。第三行是乙個整數m 0 m 2 30 表示需要得到的和。輸出若存在和為...

OpenJudge 和為給定數

描述 給出若干個整數,詢問其中是否有一對數的和等於給定的數。輸入共三行 第一行是整數n 0 n 100,000 表示有n個整數。第二行是n個整數。整數的範圍是在0到10 8之間。第三行是乙個整數m 0 m 2 30 表示需要得到的和。輸出若存在和為m的數對,輸出兩個整數,小的在前,大的在後,中間用單...