记录编号 355206 评测结果 AAAAATTTTTT
题目名称 排序测试 最终得分 45
用户昵称 GravatarEzoi_XY 是否通过 未通过
代码语言 C++ 运行时间 6.626 s
提交时间 2016-11-23 21:30:21 内存使用 25.29 MiB
显示代码纯文本
#include <cstdio>
#include <cstdlib>
#include <ctime>
using namespace std;
int a[2000011];
char b[24111111], *bp(b), u[15], *up;
void qs(int l, int r) {
	if (l > r) return;
	int i(l), j(r), t, m(a[rand() % (r - l + 1) + l]);
	while (i <= j) {
		while (a[i] < m) ++i;
		while (a[j] > m) --j;
		if (i <= j) {
			t = a[i]; a[i] = a[j]; a[j] = t;
			++i; --j;
		}
	}
	qs(l, j); qs(i, r);
}
int main() {
	int n(0), i;
	srand(time(NULL));
	freopen("sorttest.in", "r", stdin);
	freopen("sorttest.out", "w", stdout);
	fread(b, 1, 24111111, stdin);
	while (*bp < '0' || *bp > '9') ++bp;
	while (*bp >= '0' && *bp <= '9') n = n * 10 + *bp++ - '0';
	for (i = 0; i < n; ++i) {
		while (*bp < '0' || *bp > '9') ++bp;
		while (*bp >= '0' && *bp <= '9') a[i] = a[i] * 10 + *bp++ - '0';
	}
	qs(0, n - 1);
	bp = b;
	for (i = 0; i < n; ++i) {
		for (up = u; a[i]; a[i] /= 10) *up++ = a[i] % 10 + '0';
		if (up == u) *bp++ = '0';
		else while (up-- != u) *bp++ = *up;
		*bp++ = ' ';
	}
	fwrite(b, 1, bp - b, stdout);
	return 0;
}