归并1个 AC,4个RE
查看原帖
归并1个 AC,4个RE
1068513
ZHUSITAOcccccc楼主2024/9/15 15:20
#include <bits/stdc++.h>
#define int long long int
using namespace std;
inline int read() {
	register int x = 0, f = 1;
	register char c = getchar();
	while (c < '0' || c > '9') {
		if (c == '-')
			f = -1;
		c = getchar();
	}
	while (c >= '0' && c <= '9') {
		x = x * 10 + c - '0';
		c = getchar();
	}
	return x * f;
}
inline void write(int x) {
	if (x < 0) {
		putchar('-');
		x = -x;
	}
	if (x > 9)
		write(x / 10);
	putchar(x % 10 + '0');
}
void mergeSort(int nums[], int l, int r) {
	if (l >= r)
		return ;
	int mid = l + (r - l >> 1);
	mergeSort(nums, l, mid);
	mergeSort(nums, mid + 1, r);
	int n = r - l + 1;
	int numsP[n] = {}, i = 0, p1 = l, p2 = mid + 1;
	while (p1 <= mid && p2 <= r)
		numsP[i++] = nums[p2] < nums[p1] ? numsP[p2++] : nums[p1++];
	while (p1 <= mid)
		numsP[i++] = nums[p1++];
	while (p2 <= r)
		numsP[i++] = nums[p2++];
	for (int j = 0; j < n; j++)
		nums[l + j] = numsP[j];
}
int n, a[100005];
signed main() {
	n = read();
	for (int i = 0; i < n; i++)
		a[i] = read();
	mergeSort(a, 0, n - 1);
	for (int i = 0; i < n; i++) {
		write(a[i]);
		putchar(' ');
	}
	return 0;
}

怎么了???

2024/9/15 15:20
加载中...