1. 程式人生 > >UVALive - 6275 Joint Venture (二分)

UVALive - 6275 Joint Venture (二分)

clu 指向 用兩個 數組 題意 include bsp pre color

題意:

給定一個整數w, 然後給定n個數, 問有沒有兩個數之和恰好為w

分析:

現將n個數數組a[]排序, 然後用兩個變量i,j指向開頭和末尾, 如果a[i] + a[j] > w, i++, 如果a[i] + a[j] < w, j--。

直到相等或者i == j(找不到結果)

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int len[1000000+7];
 4 int main(){
 5     int w, n;
 6     while(~scanf("%d", &w)){
 7         w *= 1e7;
8 scanf("%d", &n); 9 for(int i = 0; i < n; i++) scanf("%d", &len[i]); 10 sort(len, len + n); 11 int i = 0, j = n-1; 12 do{ 13 if(len[i] + len[j] > w) j--; 14 else if(len[i] + len[j] < w) i++; 15 }while(len[i] + len[j] != w && i < j);
16 if(i < j) printf("yes %d %d\n", len[i], len[j]); 17 else printf("danger\n"); 18 } 19 }

UVALive - 6275 Joint Venture (二分)