(File IO): input:sort.in output:sort.out
時間限制: 1000 ms 空間限制: 256000 KB 具體限制
題目描述
小和小是好朋友。小的成績很差,以至於 (平均績點)在系內倒數。系內一共有位同學,每位同學有自己的 ,以及已修學分數,定義 已修學分數。小爲了幫助小提高成績,給小y提了一個要求:新學期的 要超過系內排名第 位的同學。 爲了幫助理解,給出一個例子:
現在給出系裏面每位同學的 (只有一位小數),以及他們的已修學分。你需要幫助小把排名 第 位的同學的 求出來。
輸入
第 行 個整數。
第 行,每行 個非負實數和 個整數,分別表示 和已 修學分數。
注意:所有同學的學分都在 的範圍。
輸出
第 行 個實數,表示排名第 同學的 ,保留 位小數輸出。
樣例輸入
5 3
73 20
79.8 21
72.6 22
85.1 23
65.7 18
樣例輸出
3.65
數據範圍限制
對於 的數據:。
對於 的數據:, 小數點後至多 位, 至多 。
解題思路
輸入同時求出,存下來,排序,輸出第項。
代碼
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n,k;
double x,y,ans[10000000];
bool cmp(double x,double y){
return x>y;
}
int main(){
freopen("sort.in","r",stdin);
freopen("sort.out","w",stdout);
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)
{
cin>>x>>y;
ans[i]=1.0*x/y;//求GAP
}
sort(ans+1,ans+1+n,cmp);//快排
printf("%0.2f",ans[k]);//輸出第k項
return 0;
}