Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2948 Accepted Submission(s): 665
4 4 4 8 1 6 6 2 4 8 2 2 12 4 0 1 2 3 4 2 8 10 1 8 11 2 8 12 3 8 13 4 0 3
1:3 1:1 2:1 1:2 1:1 1:1
#include<stdio.h> #include<string.h> #include<algorithm> #define INF 0x3f3f3f #define min(a,b)(a<b?a:b) using namespace std; struct record { int jin; int jiang; int man; double jinman; double jiangman; }num[1010]; struct input//记录所有进行排序的城市 的数据 { int jin; int jiang; int man; double jinman; double jiangman; }in[1010]; struct node//记录排序前各个国家的数据 { int jin; int jiang; int man; double jinman; double jiangman; }mark[1010]; bool cmp1(input a,input b) { return a.jin>b.jin; } bool cmp2(input a,input b) { return a.jiang>b.jiang; } bool cmp3(input a,input b) { return a.jinman>b.jinman; } bool cmp4(input a,input b) { return a.jiangman>b.jiangman; } int main() { int country; int i,j,n,m; int p1,p2,p3,p4;//记录各个国家用1,2,3,4方式排名后的名次 int p;//最优名次 while(scanf("%d%d",&n,&m)!=EOF) { for(i=0;i<n;i++) { scanf("%d%d%d",&num[i].jin,&num[i].jiang,&num[i].man); num[i].jinman=num[i].jin/(double)num[i].man; num[i].jiangman=num[i].jiang/(double)num[i].man; } for(j=0;j<m;j++) { scanf("%d",&country); in[j].jin=num[country].jin; in[j].jiang=num[country].jiang; in[j].jinman=num[country].jinman; in[j].jiangman=num[country].jiangman; mark[j].jin=num[country].jin;//记录当前国家的数据 排序后第一次出现就是该国家的名次 mark[j].jiang=num[country].jiang; mark[j].jinman=num[country].jinman; mark[j].jiangman=num[country].jiangman; } for(j=0;j<m;j++) { p1=p2=p3=p4=INF; sort(in,in+m,cmp1); for(i=0;i<m;i++) { if(in[i].jin==mark[j].jin) { p1=i; break; } } sort(in,in+m,cmp2); for(i=0;i<m;i++) { if(in[i].jiang==mark[j].jiang)//第一次出现 { p2=i; break; } } if(p2==p1)//排序方式小的优先 p2=INF; sort(in,in+m,cmp3); for(i=0;i<m;i++) { if(in[i].jinman==mark[j].jinman) { p3=i; break; } } if(p3==p2||p3==p1) p3=INF; sort(in,in+m,cmp4); for(i=0;i<m;i++) { if(in[i].jiangman==mark[j].jiangman) { p4=i; break; } } if(p4==p3||p4==p2||p4==p1) p4=INF; p=min(min(p1,p2),min(p3,p4)); if(p==p1) printf("%d:1\n",p1+1); else if(p==p2) printf("%d:2\n",p2+1); else if(p==p3) printf("%d:3\n",p3+1); else printf("%d:4\n",p4+1); } printf("\n"); } return 0; }