题目编号:126-奖学金 查看该题
状态: Unaccepted
测评机: Xeond[6]
得分: 70分
提交日期: 2008-11-12 23:39:00
有效耗时: 766毫秒
测试结果1: 通过本测试点|有效耗时172:ms
测试结果2: 通过本测试点|有效耗时62:ms
测试结果3: 通过本测试点|有效耗时63:ms
测试结果4: 通过本测试点|有效耗时63:ms
测试结果5: 测试结果错误.错误结果为:66 276
19 270
88 270
101 270
93 267
正确结果应为:66 276
88 270
19 270
101 270
93 267
测试结果6: 测试结果错误.错误结果为:96 261
136 252
5 251
37 251
33 249
正确结果应为:96 261
136 252
37 251
5 251
33 249
测试结果7: 测试结果错误.错误结果为:10 292
45 292
130 292
143 276
171 276
正确结果应为:10 292
45 292
130 292
171 276
143 276
测试结果8: 通过本测试点|有效耗时172:ms
测试结果9: 通过本测试点|有效耗时172:ms
测试结果10: 通过本测试点|有效耗时62:ms
提交代码: 测试结果错误.错误结果为:66 276
19 270
88 270
101 270
93 267
正确结果应为:66 276
88 270
19 270
101 270
93 267
#define needed 5
#define maxn 300
using namespace std;
#define fin cin
#define fout cout
struct stu
{
int number;
int chinese;
int math;
int english;
int together;
} scholar[maxn];
void data_change(int i,int j);
int data_cmp(int i,int j);
void sort1(int n);
int main (void)
{
int n;
fin>>n;
for (int i=0;i<n;i++)
{
fin>>scholar[i].chinese>>scholar[i].math>>scholar[i].english;
scholar[i].together=scholar[i].chinese+scholar[i].math+scholar[i].english;
scholar[i].number=i+1;
}
sort1(n);
for (int i=0;i<needed;i++)
fout<<scholar[i].number<<" "<<scholar[i].together<<endl;
return 0;
}
void data_change(int i,int j)
{
stu switch_temp;
switch_temp=scholar[i];
scholar[i]=scholar[j];
scholar[j]=switch_temp;
}
int data_cmp(int i,int j)
{
if (scholar[i].together==scholar[j].together)
{
if (scholar[i].chinese==scholar[j].chinese)
return (scholar[i].number<scholar[j].number)?1:-1;
else
return (scholar[i].chinese>scholar[j].chinese)?1:-1;
}
else return (scholar[i].together>scholar[j].together)?1:-1;
}
void sort1(int n)
{
for (int i=0;i<n-1;i++)
for (int j=i+1;j<n;j++)
if (data_cmp(i,j)==-1)
{
data_change(i,j);
}
}
//Last Edited:飞雪天涯(AH-1088)
//Author:SnowFly
//ALGORITHM:sort with special compare
//Time:O(n^2/2)
//Memory:2K