#pragma GCC optimize("unroll-loops")
#include <bits/stdc++.h>
#define FOR(i,j,k) for(int i=j; i<=k; ++i)
#define ROF(i,j,k) for(int i=j; i>=k; --i)
using ud = unsigned;
ud a[134217728], b[134217728], c[256];
const int g = 255;
inline void solve (int n) {
FOR(i,0,n-1) b[i] = i;
int w = 0;
FOR(T,0,3) {
FOR(i,0,g) c[i] = 0;
FOR(i,0,n-1) ++ c[a[i]>>w&g];
FOR(i,1,g) c[i] += c[i-1];
ROF(i,n-1,0) b[-- c[a[i]>>w&g]] = a[i];
std::swap (a, b); w += 8;
}
}
void sort (unsigned *A, int n) {
FOR(i,0,n-1) a[i] = A[i];
solve (n);
FOR(i,0,n-1) A[i] = a[i];
}
Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
Testcase #1 | 36.133 s | 1536 MB + 32 KB | Memory Limit Exceeded | Score: 0 | 显示更多 |