题解 | #奖学金#
奖学金
http://www.nowcoder.com/practice/cee98a512ec246a2918ea8121f7612c8
#include<iostream>
#include<vector>
using namespace std;
struct cla //课程
{
int s; //分数
int t; //时间
};
long long plan(vector<cla> all,int now,int avg,int n,int r) //暴力计算时间
{
int tot=avg*n;
if(now>tot) //判断是否不需要计算
return 0;
for(int i=0;i<n-1;i++) //冒泡排序,按时间从小到大排
{
int flag=0;
for(int j=1;j<n-i;j++)
{
if(all[j-1].t>all[j].t)
{
cla tmp=all[j];
all[j]=all[j-1];
all[j-1]=tmp;
flag=1;
}
}
if(flag==0)
break;
}
long long count=0;
for(int i=0;i<n;i++) //计算时间至总分数达到要求
{
while(all[i].s++<r&&now++<tot)
{
count+=all[i].t;
}
}
return count;
}
int main()
{
int n,r,avg;
while(cin>>n>>r>>avg)
{
vector<cla> all(n);
int now=0;
for(int i=0;i<n;i++)
{
cla c;
cin>>c.s>>c.t;
all[i]=c;
now+=c.s;
}
cout<<plan(all, now, avg, n, r)<<endl;;
}
return 0;
} 