您的位置:首页 > 其它

杭电 3789 奥运排序

2012-05-25 23:02 225 查看
这个题是没看清楚啊,是要在需要的安排的名次的国家进行排名的,其他的不要排。

代码:

#include"iostream"
using namespace std;
typedef struct{
int jin;
int pai;
int renkou;
double jinbi;
double paibi;
int zuihao;
}jp;
jp p[100000];
int n,m;
int t[10000];
int ff(int s)
{
int s1[4];
s1[0]=s1[1]=s1[2]=s1[3]=1;
int s5;
for(int i=0;i<m;i++)
{
if(p[s].jin<p[t[i]].jin)
s1[0]++;//判断金牌排第几
if(p[s].pai<p[t[i]].pai)
s1[1]++; //判断奖牌排第几
if(p[s].jinbi<p[t[i]].jinbi)
s1[2]++; //判断人均金牌排第几
if(p[s].paibi<p[t[i]].paibi)
s1[3]++; //判断人均奖牌排第几
}
int min1=10000000;
for(int j=1;j<5;j++)
if(s1[j-1]<min1)
{
min1=s1[j-1];
s5=j;
}//找到名次最前的,以及第几种
p[s].zuihao=min1;
return s5;
}
int main()
{

while(cin>>n>>m)
{
for(int i=0;i<n;i++)
{
cin>>p[i].jin>>p[i].pai>>p[i].renkou;
p[i].jinbi=double(p[i].jin)/p[i].renkou;
p[i].paibi=double(p[i].pai)/p[i].renkou;
}
for(int j=0;j<m;j++)
cin>>t[j];
for(int k=0;k<m;k++)
{
int b=ff(t[k]);
cout<<p[t[k]].zuihao<<":"<<b<<endl;
}
cout<<endl;

}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: