X的纠结
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
新一届的学妹果然是一个比一个漂亮啊,X看看这个也不错,看看那个也不错,所以他的纠结来了,究竟要去追哪一个呢?柏拉图说过:良好的开端等于成功的一半。所以这个选择也是很重要的啊,我们要帮一帮X了。
假设,X的心中有对每一个学妹的心动值a,每个学妹也有对X的好感值b。那么请按心动值由大到小,当心动值相同时,好感值也由大到小排序,找出X的最佳的追求序列吧。
输入
第1行输入一个n(n <= 100 )。
第2行到第n+1行,每行两个整数a,b(a < 100 , b < 100)。对于第i+1行两个整数a,b代表了X对第i个女生的心动值a,和好感值b(不存在a,b同时相同的情况)。
输出
输出1行,n个整数(每两个整数之间有空格),代表X的最佳追求序列。
示例输入
3 1 2 2 1 2 2
示例输出
3 2 1
提示
来源
winddreams
示例程序
#include <stdio.h>
typedef struct Girl
{
int id;
int a;
int b;
}girl;
int main()
{
girl g[101], t;
int n, i, j;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d",&g[i].a,&g[i].b);
g[i].id=i+1;
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(g[j].b<g[j+1].b)
{
t=g[j];
g[j]=g[j+1];
g[j+1]=t;
}
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(g[j].a<g[j+1].a)
{
t=g[j];
g[j]=g[j+1];
g[j+1]=t;
}
}
for(i=0;i<n;i++)
{
if(i==n-1)
printf("%d\n",g[i].id);
else
printf("%d ",g[i].id);
}
return 0;
}