題目描述 Description
奈米猿和mmm是好朋友。Mmm的成績很差,以至於GPA(平均績點)在年級內倒數。年級內一共有N位同學,每位同學有自己的GPA,以及已修學分數,定義GPT=GPA×已修學分數。奈米猿為了幫助mmm提高成績,給mmm提了一個要求:新學期的GPA要超過級內排名第K位同學。
為了幫助理解,這裡給出一個例子:
排名 |
GPA |
已修學分數 |
GPT |
1 |
3.8 |
21 |
79.8 |
2 |
3.7 |
23 |
85.1 |
3 |
3.65 |
20 |
73 |
4(跟3一樣) |
3.65 |
18 |
65.7 |
5 |
3.3 |
22 |
72.6 |
現在給出年級裡面每位同學GPT(只有一位小數),以及他們的已修學分數。你需要幫助mmm把排名第K位的同學的GPA求出來。
輸入描述 Input Description
第1行為兩個整數N,K;
第2至N+1行,每行1個非負實數和1個整數,分別表示GPT和已修學分數。
輸出描述 Output Description
1個實數,表示排名第K同學的GPA,保留2位小數輸出。
樣例輸入 Sample Input
5 3
73 20
79.8 21
72.6 22
85.1 23
65.7 18
樣例輸出 Sample Output
3.65
資料範圍及提示 Data Size & Hint
50%的資料滿足:1≤N≤100
100%的資料滿足:1≤K≤N≤100000,GPT小數點後至多一位,GPA至多4.0
1 #include<iostream> 2 #include<algorithm> 3 #include<cstdio> 4 using namespace std; 5 int n,k; 6 double a[1000001]; 7 double b[1000001]; 8 double c[1000001]; 9 int main() 10 { 11 cin>>n>>k; 12 for(int i=1;i<=n;i++) 13 { 14 cin>>a[i]; 15 cin>>b[i]; 16 c[i]=a[i]/b[i]; 17 } 18 sort(c+1,c+n+1); 19 printf("%.2lf",c[n-k+1]); 20 return 0; 21 }