[C++] 挑战程序设计 1.1 →→→→→进入此内容的聊天室

来自 , 2020-01-17, 写在 C++, 查看 112 次.
URL http://www.code666.cn/view/15d185ea
  1. #include<cstdio>
  2. #include<cstdlib>
  3. #include<cmath>
  4. #include<cstring>
  5. #include<cctype>
  6. #include<algorithm>
  7. #include<iostream>
  8. using namespace std;
  9. #define MAXN 1000000+10
  10. int k[MAXN],kk[MAXN];
  11. int m,n;
  12. bool cmp(int x,int y)
  13. {
  14.     return x<y?true:false;
  15. }
  16. bool binary(int x)
  17. {
  18.     int start=0,endd=n*n;
  19.     while(endd-start>=1)
  20.     {
  21.         int mid=(start+endd)/2;
  22.         if(kk[mid]>x) endd=mid-1;
  23.         if(kk[mid]<x) start=mid+1;
  24.         if(kk[mid]==x) return true;
  25.     }
  26.     return false;
  27. }
  28.  
  29. int main()
  30. {
  31.     int T;
  32.     scanf("%d",&T);
  33.     while(T--)
  34.     {
  35.         scanf("%d%d",&n,&m);
  36.         int i,j;
  37.         for(i=0;i<n;i++) scanf("%d",&k[i]);
  38.         for(i=0;i<n;i++)
  39.         {
  40.             for(j=0;j<n;j++)
  41.             {
  42.                 kk[i*n+j]=k[i]+k[j];
  43.             }
  44.         }
  45.         sort(kk,kk+n*n,cmp);
  46.         bool flag=false;
  47.         for(i=0;i<n;i++)
  48.         {
  49.             for(j=0;j<n;j++)
  50.             {
  51. //                cout<<"***"<<binary(m-k[i]-k[j])<<endl;
  52.                 if(binary(m-k[i]-k[j])) flag=true;
  53.             }
  54.         }
  55.         if(flag) printf("Yes\n");
  56.         else printf("No\n");
  57.     }
  58.     return 0;
  59. }
  60.  

回复 "挑战程序设计 1.1"

这儿你可以回复上面这条便签

captcha