zoj 1101 二分搜索

来源:互联网 发布:阿里云短信怎么使用 编辑:程序博客网 时间:2024/06/05 11:11

/**

感觉时间复杂度还是太高了,一开始自己写了个二分搜索。比STL里的要慢个几毫秒。可能是数据量太少了,体现不出来。

*/


#if 1#include <iostream>#include <cstdio>#include <string.h>#include <algorithm>using namespace std;#define MY_MAX 1001long dight[MY_MAX]={0};int cmp(const void *a ,const void *b){return *(long *)a - *(long *)b;}void  solve(int n ){qsort(dight,n,sizeof(long),cmp);for(int i = n -1; i >= 0 ;i-- ){for(int j = 0 ; j < n;j++){long X = dight[ i ] - dight[j];for(int k = 0 ; k < n;k++){if (i == j || j == k || i == k) continue;    long x2 = X - dight[k];if(x2 != dight[j] && x2!= dight[i]&& x2 != dight[k]&&binary_search(dight, dight + n, x2)  ) {printf("%ld\n",dight[i]);   return ;}}}}printf("no solution\n");return ;}int main(){int n;long a,result;while(scanf("%d",&n),n){for(int i = 0 ;i < n;i++)scanf("%ld",&dight[i]);    solve(n);}return 0;}#endif



原创粉丝点击