#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
usingnamespacestd;
structGrade
...{
intnums;
intgrade;
stringtimes;
intindex;
};
vector<Grade>g;
intcnt[6];
intn;
boolcmp1(Gradea,Gradeb)
...{
if(a.nums==b.nums)
returna.times<b.times;
else
returna.nums>b.nums;
}
boolcmp2(Gradea,Gradeb)
...{
returna.index<b.index;
}
voidgetGrade()
...{
intcnt2[6]=...{0};
for(inti=0;i<n;i++)
...{
if(g[i].nums==5)
g[i].grade=100;
elseif(g[i].nums==0)
g[i].grade=50;
else
...{
intk=g[i].nums;
if(cnt2[k]<cnt[k])
...{
g[i].grade=55+k*10;
cnt2[k]++;
}
else
g[i].grade=50+k*10;
}
}
}
boolrun()
...{
cin>>n;
if(n<0)returnfalse;
g.resize(n);
inti;
for(i=0;i<6;i++)cnt[i]=0;
for(i=0;i<n;i++)
...{
cin>>g[i].nums>>g[i].times;
g[i].index=i;
cnt[g[i].nums]++;
}
sort(g.begin(),g.end(),cmp1);
for(i=0;i<6;i++)cnt[i]/=2;
getGrade();
sort(g.begin(),g.end(),cmp2);
for(i=0;i<n;i++)cout<<g[i].grade<<endl;
cout<<endl;
returntrue;
}
intmain()
...{
while(run());
return0;
}
本文介绍了一个C++程序,该程序能够读取学生的成绩次数,并按特定规则进行排序和评分。通过全局数组实现计数和比较,使用自定义结构体存储学生信息,通过两次排序确保输出符合要求。
1093

被折叠的 条评论
为什么被折叠?



