| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 931 人关注过本帖
标题:简单的ACM问题
取消只看楼主 加入收藏
lcddhr
Rank: 2
等 级:论坛游民
帖 子:25
专家分:29
注 册:2011-5-18
结帖率:100%
收藏
已结贴  问题点数:4 回复次数:0 
简单的ACM问题
我们知道,每一年的ACM/ICPC亚洲地区现场赛赛都会有很多很多个代表队参赛,于是,怎么把这些队伍排序成了组织者最头疼的问题。后来,他们终于想出了解决方案,那就是——按照网络赛的做题数排序,如果做题数一样再按罚时排序,如果罚时又是一样的,那就只能按照学校名字的字典序排序了
他们规定:
1、做题数多的排在前面;
2、罚时少的排在前面
3、名字按字母ASCII码值升序排列,如果第一个字母一样就比较第二个字母,以此类推


Input

Line 1:一个数N(1<= N <= 500),代表进入现场赛的学校数
Line 2 - N + 1:队伍的名字(不含空格,由大小写字母组成,长度不超过50)、做题数(正整数)、罚时(正整数)
输入数据保证不出现三者完全一样的数据

(题目包含多组数据)

Output

按输入的格式把队伍排序后输出,case之间输出空行

Sample Input


2
TeamA 3 200
TeamB 4 500

Sample Output


TeamB 4 500
TeamA 3 200




我的代码:
#include<stdio.h>
void main()
{
  int N;
  char *a[20],*temp;
  int i,j,k,flag;
  int b[20],c[20];


  scanf("%d",&N);

  for(i=0;i<N;i++)
  {
     scanf("%s",a[i]);   //我知道我这是输入的时候发生了问题,但是我不知道该如何修改 想了好久都还是没想出办法修改
     scanf("%d",&b[i]);
     scanf("%d",&c[i]);


  }


************************** 下面的代码是比较队的名字的大小的,  我知道应该先比较题目数,然后再比较时间 但是比较出来 如何把较多题目 和时间较小的下标排好序输出呢??   请大侠指教一下  或者帮我修改一下代码  我刚接触acm几天 有不好的地方请见谅  *********************
  for(i=0;i<N;i++)   
  {
   k=i;

   for(j=0;j<N-i;j++)
   if(strcmp(a[k],a[j])>0)
     k=j;

   if(k!=i)
    {
     temp=a[i];
     a[i]=a[k];
     a[k]=temp;;
    }

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


    getchar();
    getchar();
    }

}
搜索更多相关主题的帖子: 字典 名字 亚洲 组织者 代表队 
2011-05-20 16:55
快速回复:简单的ACM问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024909 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved