PAT 1048

来源:互联网 发布:淘宝我是商家怎么激活 编辑:程序博客网 时间:2024/04/28 23:59
#include<cstdio>#include<stdlib.h>#include<cstring>using namespace std;int num[1005]={0};int face_value;bool flag=false;int main(){int n,m;scanf("%d%d",&n,&m);for(int i=0;i<n;i++){scanf("%d",&face_value);num[face_value]++;}for(int i=0;i<1005;i++){if(num[i]&&num[m-i]){if(i==m-i&&num[i]<=1){continue;}printf("%d %d\n",i,m-i);return 0;}}printf("No Solution\n");system("pause");return 0;}
//二分法#include<cstdio>#include<algorithm>#include<stdlib.h>#include<cstring>using namespace std;int bin(int a[],int left,int right,int x){while(left<=right){int mid=(left+right)/2;if(a[mid]>x){right=mid-1;}else if(a[mid]<x){left=mid+1;}else{return 1;}}return -1;}int a[100010];int main(){int n,m;scanf("%d%d",&n,&m);for(int i=0;i<n;i++){scanf("%d",&a[i]);}sort(a,a+n);for(int i=0;i<n;i++){int j=bin(a,i+1,n-1,m-a[i]);if(j!=-1){printf("%d %d",a[i],m-a[i]);system("pause");return 0;}}printf("No Solution");system("pause");return 0;}

//two pointers#include<cstdio>#include<algorithm>#include<stdlib.h>#include<cstring>using namespace std;int a[100010];int main(){int n,m;scanf("%d%d",&n,&m);for(int i=0;i<n;i++){scanf("%d",&a[i]);}sort(a,a+n);int i=0;int j=n-1;while(i<j){if(a[i]+a[j]==m){printf("%d %d",a[i],m-a[i]);system("pause");return 0;}else if(a[i]+a[j]>m){j--;}else i++;}printf("No Solution");system("pause");return 0;}


0 0
原创粉丝点击