讨论 / 【争分】 为什么只有第一个点超时??费解啊~
Symmetry 2012-08-15 00:22:00
点我顶贴 收藏 删除
为什么只有第一个点超时??费解啊~

#include <iostream>

using namespace std;

int n;

struct node{

char s[210];

int len,sc[110];

}a[5001];

int cmp (const void *x,const void *y){

node *p=(node *)x;

node *q=(node *)y;

if (p->len!=q->len)return q->len-p->len;

for (int i=1;i<=p->len;i++)

if (p->sc[i]!=q->sc[i])return q->sc[i]-p->sc[i];

return q->sc-p->sc;

}

void init (){

cin>>n;

int i;

char ch;

for (i=1;i<=n;i++){

scanf ("%s\n",a[i].s);

scanf ("%c",&ch);

a[i].len=0;

while (ch=='0'){

scanf ("%c",&ch);

}

while (ch>='0'&&ch<='9'){

a[i].len++;

a[i].sc[a[i].len]=ch-'0';

scanf ("%c",&ch);

}

if (a[i].len==0){a[i].sc[++a[i].len]=0;}

}

qsort (a+1,n,sizeof (a[1]),cmp);

}

void out (){

int i;

for (i=1;i<=n;i++)

printf ("%s\n",a[i].s);

}

int main (){

init ();

out ();

return 0;

}

查看更多回复
提交回复