【蒟蒻玄关求解】求助ATCODER题目
  • 板块灌水区
  • 楼主DPG_DPG123
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/7/20 11:50
  • 上次更新2023/11/3 08:41:32
查看原帖
【蒟蒻玄关求解】求助ATCODER题目
755412
DPG_DPG123楼主2023/7/20 11:50

玄关!

https://www.luogu.com.cn/record/116549582

# include <bits/stdc++.h>
using namespace std;
long long N, M, Q, x[110000], s[110000];
long long ans1, ans2;

void solve(int s) { // 功能:从x[]中选择两个元素,加起来=s
	long long l = 0, r = N - 1; // 定义两个指向
	while (x[l] + x[r] != s && l < r) {
		if (x[l] + x[r] > s)
			r --;
		else if (x[l] + x[r] < s)
			l ++;
	}
	// 产生结果
	ans1 = l;
	ans2 = r;
}

int main() {
	cin >> N >> M;
	for (int i = 0; i < N; i ++)
		cin >> x[i];
	cin >> Q;
	for (int i = 0; i < Q; i ++)
		cin >> s[i];
	// 排序,然后二分求解从xi中选两个加起来=si
	sort(x, x + N);
	for (int i = 0; i < Q; i ++) { // 遍历s[],挨个求解
		solve(s[i]);
		cout << x[ans1] << ' ' << x[ans2] << endl;
	}
	return 0;
}
2023/7/20 11:50
加载中...