这个题目主要是IO限制和计数排序。计数排序是线性的。

不过个人觉得没有人会蛋疼到出个IO限制的题目- -

非IO限制的AC

cconst int maxn = 110;
int n;
int cnt[maxn];
int main()
{
    int temp;
    while(scanf("%d", &n) == 1 && n)
    {
        memset(cnt, 0, sizeof(cnt));
        for(int i = 0; i < n;i ++)
        {
            scanf("%d", &temp);
            cnt[temp]++;
        }

        for(int i = 1; i < 100; i++)
        {
            for(int j = 0; j < cnt[i]; j++)
                printf("%d%c", i, --n == 0 ? '\n':' ');
        }


    }
    return 0;
}

IO限制达成的AC

c#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cctype>

using namespace std;

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;
}

int buf[10];
inline void writeint(int i)
{
    int p = 0;
    if(i == 0) p++;
    else while(i) {
        buf[p++] = i % 10;
        i /= 10;
    }

    for(int j = p-1; j >= 0; j--) putchar('0' + buf[j]);
}

const int maxn = 110;
int n;
int cnt[maxn];
int main()
{
    int temp;
    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++)
            {
                // printf("%d%c", i, --n == 0 ? '\n':' ');
                if(!first) putchar(' ');
                else first = 0;
                writeint(i);
            }
        }
        printf("\n");
    }
    return 0;
}


svtter
209 声望37 粉丝

更喜欢原型开发