L2-027 名人堂与代金券 (25 分)
水题~。
const int N=10010;
struct Node
{
string name;
int grade;
int rank;
bool operator<(const Node &W) const
{
if(grade != W.grade) return grade > W.grade;
return name < W.name;
}
}a[N];
int n,g,k;
int main()
{
cin>>n>>g>>k;
int sum=0;
for(int i=0;i<n;i++)
{
cin>>a[i].name>>a[i].grade;
if(a[i].grade >= g) sum+=50;
else if(a[i].grade >= 60) sum+=20;
}
sort(a,a+n);
cout<<sum<<endl;
for(int i=0;i<n;i++)
{
if(i && a[i].grade == a[i-1].grade)
a[i].rank=a[i-1].rank;
else
a[i].rank=i+1;
if(a[i].rank > k)
break;
else
cout<<a[i].rank<<' '<<a[i].name<<' '<<a[i].grade<<endl;
}
//system("pause");
return 0;
}