1 条题解

  • 1
    @ 2025-2-23 19:17:12

    题目传送门

    #include<bits/stdc++.h>
    using namespace std;
    const int inff = 1e6;
    long long n, c, b[inff], ans;
    int finddd(long long  x) {
    	int l = 0, r = n + 1, mid;
    	while (l + 1 < r) {
    
    		mid = (l + r) / 2;
    		if (b[mid] < x) {
    			l = mid;
    		} else r = mid;
    	}
    	return l;
    }
    int main() {
    	cin >> n;
    	for (int i = 1; i <= n; i++) {
    		cin >> b[i];
    	}
    	cin >> c;
    	sort(b + 1, b + 1 + n);
    	//cout<<findd(3);
    	for (int i = 1; i <= n; i++) {
    		long long a = c - b[i];
    		//cout<<finddd(a)+1<<endl;
    		if(b[finddd(a)+1]==a){
    			cout<<min(b[i],a)<<" "<<max(b[i],a)<<endl;
    			return 0;
    		}
    		//cout<<finddd(a)-findd(a)+1<<endl;
    	}
    	cout<<"No"<<endl;
    	//cout << ans << endl;
    	return 0;
    }
    
    

    信息

    ID
    3277
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    4
    已通过
    1
    上传者