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)
{
u32 val = * i;
++ cnt0[val & 255],++ cnt8[val >> 8 & 255],++ cnt16[val >> 16 & 255],++ cnt24[val >> 24 & 255];
}
for (int sum0 = 0,sum8 = 0,sum16 = 0,sum24 = 0,i = 1;i < 256;++ i)
{
cnt0[i] += sum0,sum0 = cnt0[i];
cnt8[i] += sum8,sum8 = cnt8[i];
cnt16[i] += sum16,sum16 = cnt16[i];
cnt24[i] += sum24,sum24 = cnt24[i];
}
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.83 us | 96 KB | Wrong Answer | Score: 0 | 显示更多 |