#include <algorithm>
#define ful 255
int t0[ful + 1], t1[ful + 1], t2[ful + 1], t3[ful + 1];
unsigned *b = new unsigned[100000000], *t[ful + 1], *p;
void sort(unsigned *a, int n) {
int i;
for (i = 0; i < n;) {
++t0[a[i] & ful], ++t1[a[i] >> 8 & ful], ++t2[a[i] >> 16 & ful], ++t3[a[i] >> 24], ++i;
++t0[a[i] & ful], ++t1[a[i] >> 8 & ful], ++t2[a[i] >> 16 & ful], ++t3[a[i] >> 24], ++i;
++t0[a[i] & ful], ++t1[a[i] >> 8 & ful], ++t2[a[i] >> 16 & ful], ++t3[a[i] >> 24], ++i;
++t0[a[i] & ful], ++t1[a[i] >> 8 & ful], ++t2[a[i] >> 16 & ful], ++t3[a[i] >> 24], ++i;
}
p = b - 1;
for (i = 0; i <= ful; i++) t[i] = p, p += t0[i];
for (i = 0; i < n; i += 4) {
p = a + i;
*(++t[p[0] & ful]) = p[0];
*(++t[p[1] & ful]) = p[1];
*(++t[p[2] & ful]) = p[2];
*(++t[p[3] & ful]) = p[3];
}
p = a - 1;
for (i = 0; i <= ful; i++) t[i] = p, p += t1[i];
for (i = 0; i < n; i += 4) {
p = b + i;
*++t[p[0] >> 8 & ful] = p[0];
*++t[p[1] >> 8 & ful] = p[1];
*++t[p[2] >> 8 & ful] = p[2];
*++t[p[3] >> 8 & ful] = p[3];
}
p = b - 1;
for (i = 0; i <= ful; i++) t[i] = p, p += t2[i];
for (i = 0; i < n; i += 4) {
p = a + i;
*++t[p[0] >> 16 & ful] = p[0];
*++t[p[1] >> 16 & ful] = p[1];
*++t[p[2] >> 16 & ful] = p[2];
*++t[p[3] >> 16 & ful] = p[3];
}
p = a - 1;
for (i = 0; i <= ful; i++) t[i] = p, p += t3[i];
for (i = 0; i < n; i += 4) {
p = b + i;
*++t[p[0] >> 24] = p[0];
*++t[p[1] >> 24] = p[1];
*++t[p[2] >> 24] = p[2];
*++t[p[3] >> 24] = p[3];
}
}
Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
Testcase #1 | 812.604 ms | 762 MB + 988 KB | Accepted | Score: 100 | 显示更多 |