提交记录 11247


用户 题目 状态 得分 用时 内存 语言 代码长度
CraZYali 1001. 测测你的排序 Time Limit Exceeded 0 5 s 403116 KB C++ 1003 B
提交时间 评测时间
2019-11-08 16:57:01 2020-08-01 02:40:45
#define REP(i, s, e) for (register int i(s), end_##i(e); i <= end_##i; i++)
#include <cmath>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>

int L[10000], R[10000];
unsigned A[100000000], tmp[100000000];

void sort(unsigned *a, int n)
{
	std::copy(a, a + n, tmp);
	struct cmp
	{
		inline bool operator () (int x, int y) {return tmp[x] > tmp[y];}
	};
	std::priority_queue <int, std::vector <int>, cmp> q;
	const register int block = sqrt(n);
	int curl(0), curr(block);
	REP(i, 0, n / block - 1)
	{
		std::sort(tmp + curl, tmp + curr);
		L[i] = curl;
		R[i] = curr;
		q.push(curl);
		curl = curr;
		curr += block;
	}
	REP(i, 0, n - 1)
	{
		int x = q.top();
		q.pop();
		A[i] = tmp[x];
		if (x + 1 < R[x / block]) q.push(x + 1);
	}
	std::copy(A, A + n, a);
}

#ifdef CraZYali
int main()
{
	int n;
	std::cin >> n;
	unsigned int *a = new unsigned int[n];
	REP(i, 0, n - 1) std::cin >> a[i];
	sort(a, n);
	REP(i, 0, n - 1) std::cout << a[i] << ' ' ;std::cout<<std::endl;
}
#endif

CompilationN/AN/ACompile OKScore: N/A

Testcase #15 s393 MB + 684 KBTime Limit ExceededScore: 0


Judge Duck Online | 评测鸭在线
Server Time: 2026-03-28 03:24:48 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠