#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;
std::vector <ud> a(134217728), b(134217728), c(256);
inline ud randint (ud seed) {
seed ^= seed << 13;
seed ^= seed >> 17;
seed ^= seed << 5;
return seed;
}
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 | 35.796 s | 1536 MB + 32 KB | Memory Limit Exceeded | Score: 0 | 显示更多 |