求助:洛谷编译失败,但vs2022编译没有问题
查看原帖
求助:洛谷编译失败,但vs2022编译没有问题
1217129
data740楼主2024/3/21 19:37
#include<iostream>
#include<vector>
using namespace std;
int l, n, m, ans, stone[500005];
int main()
{
	vector<int>a;
	cin >> l >> n >> m;
	stone[0] = 0, stone[n + 1] = l;
	for (int i = 1; i <= n; i++)
		cin >> stone[i];
	for (int i = 1; i <= n + 1; i++)
		a.push_back(stone[i] - stone[i - 1]);

	while (m--)
	{
		auto min_position = min_element(a.begin(), a.end()) - a.begin();
		if (min_position == 0)
		{
			a[min_position + 1] += a[min_position];
			for (auto iter = a.begin(); iter != a.end(); iter++)
			{
				if (*iter == a[min_position])
				{
					a.erase(iter);
					break;
				}
			}
		}
		else if (a[min_position - 1] <= a[min_position + 1])
		{
			a[min_position - 1] += a[min_position];
			for (auto iter = a.begin(); iter != a.end(); iter++)
			{
				if (*iter == a[min_position])
				{
					a.erase(iter);
					break;
				}
			}
		}
		else if (a[min_position - 1] > a[min_position + 1])
		{
			a[min_position + 1] += a[min_position];
			for (auto iter = a.begin(); iter != a.end(); iter++)
			{
				if (*iter == a[min_position])
				{
					a.erase(iter);
					break;
				}
			}
		}
		else if (min_position == a.size() - 1)
		{
			a[min_position - 1] += a[min_position];
			for (auto iter = a.begin(); iter != a.end(); iter++)
			{
				if (*iter == a[min_position])
				{
					a.erase(iter);
					break;
				}
			}
		}
	}
	auto ans_position = min_element(a.begin(), a.end()) - a.begin();
	ans = a[ans_position];
	cout << ans;
}
2024/3/21 19:37
加载中...