链接:https://ac.nowcoder.com/acm/contest/9033/A
来源:牛客网
最终得分从高到低排前m高的将被录取,如果有同分,小A将优先被录取.
求小A高考至少要考到多少分才能被W大学录取.
来源:牛客网
招生
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
小A去参加W大学的一个招生项目.
除了小A,还有n个人报名了W大学的这个招生项目,而W大学只招收m个人.
每个人有一个高考分和一个校测分,分数都是非负整数,满分都是p,分数都不大于p.
因为小A优异的竞赛成绩,W大学给了小A承诺,他将会校测给满分.
然后每个人的最终得分为 高考分*85% + 校测分*15%.
每个人有一个高考分和一个校测分,分数都是非负整数,满分都是p,分数都不大于p.
因为小A优异的竞赛成绩,W大学给了小A承诺,他将会校测给满分.
然后每个人的最终得分为 高考分*85% + 校测分*15%.
最终得分从高到低排前m高的将被录取,如果有同分,小A将优先被录取.
求小A高考至少要考到多少分才能被W大学录取.
输入描述:
第一行,三个正整数n,m,p.
后面n行,每行两个正整数数ai,bia_i,b_iai,bi,分别表示第i个人的高考分和校测分。
输出描述:
一行一个数,表示答案:小A高考至少要考多少分。
示例1
输入
6 3 750 700 530 683 625 703 620 699 623 710 538 654 599
输出
673
备注:
m≤n≤105,ai,bi≤p≤109m \le n \le 10^5,a_i,b_i \le p \le10^9m≤n≤105,ai,bi≤p≤109
Hint
关注分数为负数的情况,因为要大于等于排序后的第m个同学的分数故应注意在计算输出分数时四舍五入。
#include <bits/stdc++.h> using namespace std; struct Name { double goal1; double goal2; double goal; }name[100000]; bool cmp(Name a,Name b) { return a.goal>b.goal; } int main() { int n,m,p; scanf("%d%d%d",&n,&m,&p); for(int i=0;i<n;i++) { scanf("%lf%lf",&name[i].goal1,&name[i].goal2); name[i].goal=name[i].goal1*0.85+name[i].goal2*0.15; } sort(name,name+n,cmp); /*for(int i=0;i<n;i++) { cout<<name[i].goal<<endl; }*/ if(m==1) { if((name[0].goal-(p*0.15))/0.85<=0)printf("0"); else printf("%.0lf",(name[0].goal-(p*0.15))/0.85+0.5); } else if(m==n) { if((name[n].goal-(p*0.15))/0.85<=0)printf("0"); else printf("%.0lf",(name[n].goal-(p*0.15))/0.85+0.5); } else if((name[m-1].goal-(p*0.15))/0.85<=0)printf("0"); else printf("%.0lf",(name[m-1].goal-(p*0.15))/0.85+0.5); return 0; }