萌新求调(桶排60pts)
查看原帖
萌新求调(桶排60pts)
763782
zbojin楼主2024/9/21 11:14
#include <stdio.h>
#include <string.h>
#include <vector>

const int MAXN = 1e5 + 5;
const int MAXVAL = 1e6 + 5;
const int MAXNUM = 1e3;

int N;
int a[MAXN];
std::vector<int> block[MAXVAL + 5];

void insertion_sort(std::vector<int> &b) {
	int siz = b.size();
	if (siz == 0)
		return;
	for (int i = 1; i < siz; ++i) {
		int key = b[i];
		int j = i - 1;
		while (j >= 0 && b[j] > key) {
			b[j + 1] = b[j];
			--j;
		}
		b[j + 1] = key;
	}
}

int main(void) {
	scanf("%d", &N);
	for (int i = 1; i <= N; ++i)
		scanf("%d", a + i);
	for (int i = 1; i <= N; ++i)
		block[a[i] / MAXNUM].push_back(a[i]);
	for (int i = 0; i < MAXNUM + 5; ++i)
		insertion_sort(block[i]);
	for (int i = 0; i < MAXNUM + 5; ++i) {
		int siz = block[i].size();
		if (siz == 0)
			continue;
		for (int j = 0; j < siz; ++j)
			printf("%d ", block[i][j]);
	}
	return 0;
}

前两个点 WA 了,不知道为什么。。。

望高人指点。

(码风略丑,不喜勿喷)

2024/9/21 11:14
加载中...