比赛 |
NOIP2007普及组(复现) |
评测结果 |
AAAAAAAAAA |
题目名称 |
奖学金 |
最终得分 |
100 |
用户昵称 |
wrp12138 |
运行时间 |
0.006 s |
代码语言 |
C++ |
内存使用 |
13.67 MiB |
提交时间 |
2020-02-09 18:05:39 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
struct student
{
int number;
int chinese;
int math;
int english;
int total;
};
student st[305];
bool cmp(const student &first,const student &second)
{
return first.total>second.total;
}
bool cmp1(const student &first,const student &second)
{
return first.chinese>second.chinese;
}
bool cmp2(const student &first,const student &second)
{
return first.number<second.number;
}
int a[350]={0},b[350]={0};
int main()
{
freopen("pj07-1.in","r",stdin);
freopen("pj07-1.out","w",stdout);
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
st[i].number=i+1;
scanf("%d %d %d",&st[i].chinese,&st[i].math,&st[i].english);
}
st[n].number=400;
st[n].chinese=0;
st[n].math=0;
st[n].english=0;
st[n].total=0;
for(int i=0;i<n;i++)
{
st[i].total=st[i].chinese+st[i].math+st[i].english;
}
sort(st,st+n,cmp);
int t=0,s=0;
for(int i=0;i<n-1;i++)
{
if(st[i].total==st[i+1].total&&s==0)
{
a[t]=i;
s=1;
}
else if(st[i].total>st[i+1].total&&s==1)
{
b[t]=i;
s=0;
t=t+1;
}
}
for(int i=0;i<t;i++)
{
sort(st+a[i],st+b[i]+1,cmp1);
}
t=0;
s=0;
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
for(int i=0;i<n-1;i++)
{
if(st[i].total==st[i+1].total&&s==0&&st[i].chinese==st[i+1].chinese)
{
a[t]=i;
s=1;
}
else if(s==1&&st[i].chinese!=st[i+1].chinese)
{
b[t]=i;
s=0;
t=t+1;
}
}
for(int i=0;i<t;i++)
{
sort(st+a[i],st+b[i]+1,cmp2);
}
for(int i=0;i<5;i++)
{
printf("%d %d",st[i].number,st[i].total);
if(i<4)
printf("\n");
}
}