题解 | #奖学金#
奖学金
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; }