题意:现在给你若干行年龄段,每段年龄段有n的人的年龄,你的任务是把这些人的年龄按升序排序。
输入格式: 若干行,每一行有一个n,接下来有n个数,代表这n个人的年龄,一直读入,直到n==0才停止。
输出格式: 每行n个数(xi<=100),数与数之间有空格。
注意:输入数据十分大(~25MB),所以要使用更快的IO。
Translated by @(T_T)
输入输出样例
输入 #1复制
5 3 4 2 1 5 5 2 3 2 3 1 0
输出 #1复制
1 2 3 4 5 1 2 2 3 3
一开始以为数据量很大打了IO优化,然而看完题解证明这是水题,不需要优化,不过还是附上我优化过的代码
#include<string.h>
#include<stdio.h>
#include<ctype.h>
using namespace std;
int temp,n,cnt[110];
int buf[10];
inline int readint() {
char c = getchar();
while (!isdigit(c)) {
c = getchar();
}
int x = 0;
while (isdigit(c)) {
x = x * 10 +( c - '0');
c = getchar();
}
return x;
}
inline void writeint(int i) {
int p = 0;
int m;
if (i == 0){
p++;
}
while(i) {
buf[p++] = i % 10;
i /= 10;
}
for (int m = p - 1; m>= 0; m--) {
putchar('0' + buf[m]);
}
}
int main(){
while (n = readint()) {
memset(cnt, 0, sizeof(cnt));
for (int i = 0; i < n; i++) {
temp = readint();
cnt[temp]++;
}
int first = 1;
for (int i = 1; i <= 100; i++) {
for (int j = 0; j < cnt[i]; j++) {
if (!first)
putchar(' ');
first = 0;
writeint(i);
}
}
putchar('\n');
}
return 0;
}