UVALive - 6275 Joint Venture (二分)
阿新 • • 發佈:2017-12-24
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 (二分)