您的位置:首页 > 其它

水题,优化,高效(年龄排序,uva 11462)

2016-10-24 21:25 239 查看
做了那么多题,只遇到过2个专门卡空间的题目,一个是某次比赛的,题目是啥都忘掉了,还有一个就是这个水题了。但这题主要值得学习的地方在于输入输出的优化,真的没想到自己写的输入输出能快那么多。250ms与80ms的区别。不过大白书上说的也对,在确信I/O时间成为整个程序性能瓶颈之前,不要盲目优化。至今还没遇到卡手写输入输出的题目= =。

isdigit函数在头文件cctype里。

输入输出函数写成inline。

代码

#include<bits/stdc++.h>
using namespace std;

int n;
int cnt[110];

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 x)
{
int p=0;
if(x==0) buf[p++]=0;
else
{
while(x)
{
buf[p++]=x%10;
x/=10;
}
for(int i=p-1;i>=0;i--) putchar('0'+buf[i]);
}
}

int main()
{
while(scanf("%d",&n)==1&&n)
{
memset(cnt,0,sizeof(cnt));
int t;
for(int i=1;i<=n;i++)
cnt[readint()]++;
t=0;
for(int i=1;i<=100;i++)
{
while(cnt[i])
{
if(t) printf(" ");
t=1;
writeint(i);
cnt[i]--;
}
}
puts("");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: