求助
查看原帖
求助
1014678
yang_h_x_2012楼主2024/5/21 19:08
#include <bits/stdc++.h>

using namespace std;

int sum3(vector<int> &nums, int l, int r) {
	vector<int> a(nums.begin() + l, nums.begin() + r);
	sort(a.begin(), a.end());
	int cnt = 0;
	int n = a.size();
	for (int i = 0; i < n - 2; ++i) {

		if (i > 0 && a[i] == a[i - 1])
			continue;
		int l1 = i + 1, r1 = n - 1;
		while (l1 < r1) {
			int sum = a[i] + a[l1] + a[r1];
			if (sum < 0) {
				++l1;

				while (l1 < r1 && a[l1] == a[l1 - 1])
					++l1;
			} else if (sum > 0) {
				--r1;

				while (l1 < r1 && a[r1] == a[r1 + 1])
					--r1;
			} else {
				++cnt;
				++l1;
				--r1;

				while (l1 < r1 && a[l1] == a[l1 - 1])
					++l1;
				while (l1 < r1 && a[r1] == a[r1 + 1])
					--r1;
			}
		}
	}
	return cnt;
}

int main() {
	vector<int> nums(100000);
	int n, m;
	cin >> n >> m;
	for (int i = 0; i < n; i++) {
		cin >> nums[i];
	}

	while (m--) {
		int l, r;
		cin >> l >> r;
		cout << sum3(nums, l - 1, r) << endl;
	}
	return 0;
}
2024/5/21 19:08
加载中...