HDOJ 1236

 

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
const int MAXSTUDENT=1000;
const int MAXPROBLEM=10;
class student
{
public:
	string ID;
	int total;
	int pro_solved;
	bool operator<(const student &v2) const;
};
bool student::operator<(const student &v2) const
{
	if(total>v2.total||(total==v2.total&&ID<v2.ID))
		return true;
	else
		return false;
}


int main()
{
	int stuNumber,proNumber,scoreLine;
	while(cin>>stuNumber&&stuNumber)
	{
		student students[MAXSTUDENT];
		for(int i=0;i<MAXSTUDENT;++i)
		{
			students[i].ID=" ";
			students[i].pro_solved=0;
			students[i].total=0;
		}
		int pointEachPro[MAXPROBLEM];
		for(int i=0;i<MAXPROBLEM;++i)
		{
			pointEachPro[i]=0;
		}
		cin>>proNumber>>scoreLine;
		for(int ix=0;ix<proNumber;++ix)
		{
			cin>>pointEachPro[ix];
		}
		
		int crosstheLine=0;
		for(int ix=0;ix<stuNumber;++ix)
		{
			cin>>students[crosstheLine].ID>>students[crosstheLine].pro_solved;
			students[crosstheLine].total=0;
			for(int j=0;j<students[crosstheLine].pro_solved;++j)
			{
				int whichIsSolved;
				cin>>whichIsSolved;
				students[crosstheLine].total+=pointEachPro[whichIsSolved-1];
			}
			if(students[crosstheLine].total>=scoreLine)
				++crosstheLine;
			
		}
		sort(students,students+crosstheLine);
		cout<<crosstheLine<<endl;
		for(int ix=0;ix<crosstheLine;++ix)
			cout<<students[ix].ID<<" "<<students[ix].total<<endl;
	}
}
posted on 2012-04-14 21:28 DrizzleX 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/DrizzleX/archive/2012/04/14/2447591.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值