int cnt0[256],cnt8[256],cnt16[256],cnt24[256];
using u32 = unsigned;
u32 b[10000];
void sort(u32 * a,int n)
{
for (u32 * _ = a + n,* i = a;i < _;++ i)
{
int val = * i;
++ cnt0[val & 255],++ cnt8[val >> 8 & 255],++ cnt16[val >> 16 & 255],++ cnt24[val >> 24 & 255];
}
for (int i = 1;i < 256;++ i)
cnt0[i] += cnt0[i - 1],cnt8[i] += cnt8[i - 1],cnt16[i] += cnt16[i - 1],cnt24[i] += cnt24[i - 1];
for (u32 * i = a + n;i > a;)
{
-- i,b[-- cnt0[* i & 255]] = * i;
-- i,b[-- cnt0[* i & 255]] = * i;
-- i,b[-- cnt0[* i & 255]] = * i;
-- i,b[-- cnt0[* i & 255]] = * i;
-- i,b[-- cnt0[* i & 255]] = * i;
-- i,b[-- cnt0[* i & 255]] = * i;
-- i,b[-- cnt0[* i & 255]] = * i;
-- i,b[-- cnt0[* i & 255]] = * i;
}
for (u32 * i = b + n; i > b;)
{
-- i,a[-- cnt8[* i >> 8 & 255]] = * i;
-- i,a[-- cnt8[* i >> 8 & 255]] = * i;
-- i,a[-- cnt8[* i >> 8 & 255]] = * i;
-- i,a[-- cnt8[* i >> 8 & 255]] = * i;
-- i,a[-- cnt8[* i >> 8 & 255]] = * i;
-- i,a[-- cnt8[* i >> 8 & 255]] = * i;
-- i,a[-- cnt8[* i >> 8 & 255]] = * i;
-- i,a[-- cnt8[* i >> 8 & 255]] = * i;
}
for (u32 * i = a + n;i > a;)
{
-- i,b[-- cnt16[* i >> 16 & 255]] = * i;
-- i,b[-- cnt16[* i >> 16 & 255]] = * i;
-- i,b[-- cnt16[* i >> 16 & 255]] = * i;
-- i,b[-- cnt16[* i >> 16 & 255]] = * i;
-- i,b[-- cnt16[* i >> 16 & 255]] = * i;
-- i,b[-- cnt16[* i >> 16 & 255]] = * i;
-- i,b[-- cnt16[* i >> 16 & 255]] = * i;
-- i,b[-- cnt16[* i >> 16 & 255]] = * i;
}
for (u32 * i = b + n; i > b;)
{
-- i,a[-- cnt24[* i >> 24 & 255]] = * i;
-- i,a[-- cnt24[* i >> 24 & 255]] = * i;
-- i,a[-- cnt24[* i >> 24 & 255]] = * i;
-- i,a[-- cnt24[* i >> 24 & 255]] = * i;
-- i,a[-- cnt24[* i >> 24 & 255]] = * i;
-- i,a[-- cnt24[* i >> 24 & 255]] = * i;
-- i,a[-- cnt24[* i >> 24 & 255]] = * i;
-- i,a[-- cnt24[* i >> 24 & 255]] = * i;
}
}
Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
Testcase #1 | 67.37 us | 92 KB | Accepted | Score: 100 | 显示更多 |