2011-08-09 07:57:21Morris
d190. 11462 - Age Sort (優化重製)
d190. 11462 - Age Sort
/**********************************************************************************/
/* Problem: d190 "11462 - Age Sort" from UVa ACM 11462 */
/* Language: C */
/* Result: AC (84ms, 5828KB) on ZeroJudge */
/* Author: morris1028 at 2011-08-05 11:39:44 */
/**********************************************************************************/
#include<stdio.h>
#include<stdlib.h>
int ReadInt(int *x) {
static char c, neg;
while((c = getchar()) < '-');
neg = (c == '-') ? -1 : 1;
*x = (neg == 1) ? c-'0' : 0;
while((c = getchar()) >= '0')
*x = (*x << 3) + (*x << 1) + c-'0';
*x *= neg;
if(c == EOF) return EOF;
return 0;
}
static char Buf[10000000], *p;
main() {
int n, x;
while(ReadInt(&n) != EOF && n) {
p = Buf;
int cnt[101] = {}, a, b;
for(a = 0; a < n; a++)
ReadInt(&x), cnt[x]++;
char t1, t2;
for(a = 1; a <= 100; a++) {
t1 = a/10+'0', t2 = a%10 + '0';
for(b = cnt[a]; b; b--) {
if(a >= 100)*p++ = '0';
if(a >= 10) *p++ = t1;
*p++ = t2;
*p++ = ' ';
}
}
*p++ = '\n';
*p++ = '\0';
fwrite(Buf, 1, p - Buf - 1, stdout);
}
return 0;
}
內容 :
給你某國家所有一歲以上 (含) 的人民的年齡。你知道該國沒有人活到 100 歲或更老。現在給你一個很簡單的工作,就是把所有的年齡由小到大排序。
輸入說明
:
輸入檔有若干組測試資料。每組測資以整數 n (0<n<=2000000) 開始,代表人數。下一行則有 n 個整數,代表他們的年齡。n = 0 代表輸入的結束,請勿處理這組測資。
輸出說明
:
對於每組測資,印出一行以空白隔開的 n 個整數。這些整數為人民的年齡,由小到大排列。
範例輸入 :
5 3 4 2 1 5 5 2 3 2 3 1 0
範例輸出 :
1 2 3 4 5 1 2 2 3 3
提示
:
出處
:
UVa ACM 11462
(管理:snail)
/**********************************************************************************/
/* Problem: d190 "11462 - Age Sort" from UVa ACM 11462 */
/* Language: C */
/* Result: AC (84ms, 5828KB) on ZeroJudge */
/* Author: morris1028 at 2011-08-05 11:39:44 */
/**********************************************************************************/
#include<stdio.h>
#include<stdlib.h>
int ReadInt(int *x) {
static char c, neg;
while((c = getchar()) < '-');
neg = (c == '-') ? -1 : 1;
*x = (neg == 1) ? c-'0' : 0;
while((c = getchar()) >= '0')
*x = (*x << 3) + (*x << 1) + c-'0';
*x *= neg;
if(c == EOF) return EOF;
return 0;
}
static char Buf[10000000], *p;
main() {
int n, x;
while(ReadInt(&n) != EOF && n) {
p = Buf;
int cnt[101] = {}, a, b;
for(a = 0; a < n; a++)
ReadInt(&x), cnt[x]++;
char t1, t2;
for(a = 1; a <= 100; a++) {
t1 = a/10+'0', t2 = a%10 + '0';
for(b = cnt[a]; b; b--) {
if(a >= 100)*p++ = '0';
if(a >= 10) *p++ = t1;
*p++ = t2;
*p++ = ' ';
}
}
*p++ = '\n';
*p++ = '\0';
fwrite(Buf, 1, p - Buf - 1, stdout);
}
return 0;
}