#define fo(i,x,y) for(int i = x;i <= y;i++)
#define fd(i,x,y) for(int i = x;i >= y;i--)
int cnt[260];
unsigned B[200000010];
void sort(unsigned *a, int n) {
n--;
fo(i,0,255) cnt[i] = 0;
fo(i,0,n) cnt[a[i] & 255]++;
fo(i,1,255) cnt[i] += cnt[i - 1];
fd(i,n,0) B[--cnt[a[i] & 255]] = A[i];
fo(i,0,255) cnt[i] = 0;
fo(i,0,n) cnt[B[i] >> 8 & 255]++;
fo(i,1,255) cnt[i] += cnt[i - 1];
fd(i,n,0) a[--cnt[B[i] >> 8 & 255]] = B[i];
fo(i,0,255) cnt[i] = 0;
fo(i,0,n) cnt[a[i] >> 16 & 255]++;
fo(i,1,255) cnt[i] += cnt[i - 1];
fd(i,n,0) B[--cnt[a[i] >> 16 & 255]] = a[i];
fo(i,0,255) cnt[i] = 0;
fo(i,0,n) cnt[B[i] >> 24 & 255]++;
fo(i,1,255) cnt[i] += cnt[i - 1];
fd(i,n,0) a[--cnt[B[i] >> 24 & 255]] = B[i];
}
| Compilation | N/A | N/A | Compile Error | Score: N/A | 显示更多 |