社区讨论

为什么我的代码只有C++14(GCC 9)过不了?

P1177【模板】排序参与者 3已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@mhjhdsd6
此快照首次捕获于
2025/11/04 02:36
4 个月前
此快照最后确认于
2025/11/04 02:36
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
int n , a[100001] , tmp[100001];
void merge (int l , int mid , int r) {
	//a[l,mid]和a[l+mid,r]排序,然后放到a[l,r]。
	int i = l , j = mid + 1 , p = l;
	while (i <= mid && j <= r) {
		if (a[i] <= a[j]) {
			tmp[p] = a[i];
			p++;
			i++;
		} else {
			tmp[p] = a[j];
			p++;
			j++;
		}
	}
	while (i <= mid) {
		tmp[p] = a[i];
		p++;
		i++;
	}
	while (j <= r) {
		tmp[p] = a[j];
		p++;
		j++;
	}
	for (int i = 1 ; i <= r ; i++) {
		a[i] = tmp[i];
	}
}
void merge_sort (int l , int r) {
	//要对a数组的[l,r]区间进行排序。
	if (l == r) {
		return;
	}
	int mid = (l + r) / 2;
	//对[l,mid]排序。
	merge_sort(l , mid);
	//对[mid+1,r]排序。
	merge_sort(mid + 1 , r);
	merge(l , mid , r);
}
int main() {
	cin >> n;
	for (int i = 1 ; i <= n ; i++) {
		cin >> a[i];
	}
	merge_sort(1 , n);
	for (int i = 1 ; i <= n ; i++) {
		cout << a[i] << " ";
	}
	return 0;
}

评测记录

回复

4 条回复,欢迎继续交流。

正在加载回复...