这个题目主要是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#include #include #include 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;}