2012-10-25 08:39:44Morris
[ZJ][bitset] a561. 內存不足
內容 :
Background
內存不足的情況下,請使用排序法。
The Problem
給定一個 n 小於一千萬,每個非負數字不重複且都小一千萬,求其排序後的結果。
輸入說明
:
請參考 Sample Input。
輸出說明
:
只會有一組測資,請只輸出 index 可以被 10 整除的數字即可。
意即 if(index mod 10 == 0) printf("%d", A[index]);
範例輸入 :
30 10 1 9 26 14 5 2 7 25 17 27 11 4 13 15 0 3 16 12 19 20 18 6 23 24 21 22 8 28 29
範例輸出 :
0 10 20
提示
:
出處
:
(管理:morris1028)
#include <stdio.h>
#define maxL (10000000>>5)+1
#define GET(x) (mark[x>>5]>>(x&31)&1)
#define SET(x) (mark[x>>5] |= 1<<(x&31))
int mark[maxL];
int main() {
int n, i, j, x;
scanf("%d", &n);
for(i = 0; i < n; i++)
scanf("%d", &x), SET(x);
for(i = 0, j = 0; i < 10000000; i++) {
if(GET(i)) {
if(j == 0) printf("%d ", i);
j++;
if(j >= 10) j = 0;
}
}
return 0;
}