码迷,mamicode.com
首页 > 其他好文 > 详细

期末考试

时间:2015-07-28 18:30:47      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:

时间限制:1000 ms  |  内存限制:65535 KB

难度:2
描述
马上就要考试了,小T有许多作业要做,而且每个老师都给出来了作业要交的期限,如果在规定的期限内没
交作业就会扣期末成绩的分数,假设完成每门功课需要一天的时间,你能帮助小T扣除的分数最小吗?
输入
输入n,表示n门功课(n<2000),接下来n行,每行两个数a,b,分别表示交作业的最后期限,迟交扣除的分数。
(以文件结尾)
输出
输出扣除的最小分数。
样例输入
3
3 10
3 5
3 1
3
1 6
3 2
1 3
7
1 3
4 2
6 1
4 7
2 6
4 5
3 4
样例输出
0
3
5
错把
<span style="color:#ff0000;background-color: rgb(102, 255, 153);">int cmp(stu a,stu b){
	if(a.x==b.x)
	return a.y<b.y;
	return a.x<b.x;
}</span>
<span style="color:#ff0000;background-color: rgb(102, 255, 153);">写成</span><pre name="code" class="cpp" style="font-size: 14px; line-height: 21px;"><span style="color:#ff0000;background-color: rgb(102, 255, 153);">int cmp(stu a,stu b){
	if(a.x==b.x)
	return a.y>b.y;
	return a.x>b.x;
}</span>


#include<stdio.h>
#include<queue>
#include<algorithm>
using namespace std;
struct stu{
	int x,y;
}aa[1000];
int cmp(stu a,stu b){
	if(a.x==b.x)
	return a.y<b.y;
	return a.x<b.x;
}
int main()
{
	int n;
	while(scanf("%d",&n)!=EOF)
	{
		int i;
	//	while()
	    priority_queue<int ,vector<int>,greater<int> >s;
		for(i=0;i<n;i++)
		scanf("%d%d",&aa[i].x,&aa[i].y);
		int sum=0;
		sort(aa,aa+n,cmp);
		for(i=0;i<n;i++)
		{
           if(s.size()<aa[i].x)
           s.push(aa[i].y);
           else{
           	if(s.top()<aa[i].y)
           	{
           		sum+=s.top();
           		s.pop();
           		s.push(aa[i].y);
           	}
           	else sum+=aa[i].y;
           }  
		}
		printf("%d\n",sum);
	}
			return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

期末考试

标签:

原文地址:http://blog.csdn.net/l15738519366/article/details/47109021

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!