二分

#include<iostream>
#include<algorithm>
using namespace std;
long long s[1919810];
int n;
long long t;
bool bin_find(int l,int r,int trt){
	while(l+1!=r){
		int m=(l+r)/2;
		if(s[m]<trt) l=m;
		else r=m;
	}
	if(s[r]==trt) return 1;
	else return 0;
}
int main(){
	cin>>n;
	for(int i=0;i<n;i++) cin>>s[i];
	cin>>t;
	sort(s,s+n);
	for(int i=0;i<=t/2;i++){
		int j=t-i;
		if(bin_find(-1,n,i)&&bin_find(-1,n,j)){
			cout<<i<<' '<<j;
			return 0;
		}
	}
	cout<<"No";
	return 0;
}

1 comments

  • 1

Information

ID
729
Time
1000ms
Memory
256MiB
Difficulty
7
Tags
# Submissions
205
Accepted
40
Uploaded By