描述
給出若干個整數,詢問其中是否有一對數的和等於給定的數。
輸入共三行:
第一行是整數n(0 < n <= 100,000),表示有n個整數。
第二行是n個整數。整數的範圍是在0到10^8之間。
第三行是乙個整數m(0 <= m <= 2^30),表示需要得到的和。
輸出若存在和為m的數對,輸出兩個整數,小的在前,大的在後,中間用單個空格隔開。若有多個數對滿足條件,選擇數對中較小的數更小的。若找不到符合要求的數對,輸出一行no。
樣例輸入
42 5 1 4
6樣例輸出
1 5先排序,後二分
注意邊界,比如當確定乙個數時,尋找另乙個數時不能把這個數也加到二分裡
#include
#include
using
namespace std;
int sz[
100000];
intmain()
cin>>m;
sort
(sz,sz+n)
;for
(int i =
0; i < n&&sz[i]*2
<=m;
++i)
else
if(sz[i]
+sz[mid]
>m)
else}}
cout<<
"no"
;}
noi(oj)程式設計基礎篇目錄
OpenJudge 1 11 0 7 和為給定數
描述 給出若干個整數,詢問其中是否有一對數的和等於給定的數。輸入 共三行 第一行是整數n 0 n 100,000 表示有n個整數。第二行是n個整數。整數的範圍是在0到10 8之間。第三行是乙個整數m 0 m 2 30 表示需要得到的和。輸出 若存在和為m的數對,輸出兩個整數,小的在前,大的在後,中間...
openjudge 1 11 07和為給定數
描述 給出若干個整數,詢問其中是否有一對數的和等於給定的數。輸入共三行 第一行是整數n 0 n 100,000 表示有n個整數。第二行是n個整數。整數的範圍是在0到10 8之間。第三行是乙個整數m 0 m 2 30 表示需要得到的和。輸出若存在和為m的數對,輸出兩個整數,小的在前,大的在後,中間用單...
Open judge 07和為給定數
總時間限制 1000ms 記憶體限制 65536kb 傳送門類似的題傳送門 描述 給出若干個整數,詢問其中是否有一對數的和等於給定的數。輸入 共三行 第一行是整數n 0 n 100,000 表示有n個整數。第二行是n個整數。整數的範圍是在0到10 8之間。第三行是乙個整數m 0 m 2 30 表示需...