首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

二零一零年第3题

2013-11-08 
2010年第3题题目地址:http://jobdu.sinaapp.com/problem.php?pid1007提供一个测试样例8 64 8 16 6 24 8 2

2010年第3题

题目地址:http://jobdu.sinaapp.com/problem.php?pid=1007

提供一个测试样例
8 6
4 8 1
6 6 2
4 8 2
2 12 4
7 12 9
2 22 6
3 22 5
9 10 1
0 1 2 4 6 7
实际排序国家以及每次排序结果
4 8 1                 4 4 2 2   2:3
6 6 2                 3 6 3 5   3:1
4 8 2                 4 4 4 4   4:1
7 12 9                2 2 5 6   2:1
3 22 5                6 1 6 3   1:2        
9 10 1                1 3 1 1   1:1

C语言源码:

#include<stdio.h>#include<stdlib.h>#define maxsize 100000typedef struct ran{int a,b;double c,d;int num;int ra;}ran;ran r[maxsize];typedef struct country{int a,b,c;int rank[5];}country;country c[maxsize];int cmp1(const void *a,const void *b){ran *aa=(ran *)a;ran *bb=(ran *)b;return bb->a-aa->a;}int cmp2(const void *a,const void *b){ran *aa=(ran *)a;ran *bb=(ran *)b;return bb->b-aa->b;}int cmp3(const void *a,const void *b){ran *aa=(ran *)a;ran *bb=(ran *)b;return aa->c>bb->c?-1:1;}int cmp4(const void *a,const void *b){ran *aa=(ran *)a;ran *bb=(ran *)b;return aa->d>bb->d?-1:1;}int main(){int n,m,i,stack[maxsize],j,y,l,min,k;double x;while(scanf("%d %d",&n,&m)!=EOF){for(i=0;i<n;i++)scanf("%d %d %d",&c[i].a,&c[i].b,&c[i].c);for(i=0;i<m;i++)scanf("%d",&stack[i]);for(i=0;i<m;i++){j=stack[i];r[i].a=c[j].a;r[i].b=c[j].b;r[i].c=(double)c[j].a/c[j].c;r[i].d=(double)c[j].b/c[j].c;r[i].num=j;}for(k=1;k<=4;k++){switch(k){case 1:qsort(r,m,sizeof(r[0]),cmp1);break;case 2:qsort(r,m,sizeof(r[0]),cmp2);break;case 3:qsort(r,m,sizeof(r[0]),cmp3);break;default :qsort(r,m,sizeof(r[0]),cmp4);break;}if(k==1){x=-1;for(i=0;i<m;i++){if(r[i].a!=x){r[i].ra=i+1;y=i+1;x=r[i].a;}elser[i].ra=y;}for(i=0;i<m;i++)c[r[i].num].rank[1]=r[i].ra;}if(k==2){x=-1;for(i=0;i<m;i++){if(r[i].b!=x){r[i].ra=i+1;y=i+1;x=r[i].b;}elser[i].ra=y;}for(i=0;i<m;i++)c[r[i].num].rank[2]=r[i].ra;}if(k==3){x=-1;for(i=0;i<m;i++){if(r[i].c!=x){r[i].ra=i+1;y=i+1;x=r[i].c;}elser[i].ra=y;}for(i=0;i<m;i++)c[r[i].num].rank[3]=r[i].ra;}if(k==4){x=-1;for(i=0;i<m;i++){if(r[i].d!=x){r[i].ra=i+1;y=i+1;x=r[i].d;}elser[i].ra=y;}for(i=0;i<m;i++)c[r[i].num].rank[4]=r[i].ra;}}for(i=0;i<m;i++){j=stack[i];min=1;for(l=1;l<=4;l++)if(c[j].rank[l]<c[j].rank[min])min=l;printf("%d:%d\n",c[j].rank[min],min);}printf("\n");}}


热点排行