zufeoj 分数线划定
分?jǐn)?shù)線劃定
時間限制:?1 Sec??內(nèi)存限制:?128 MB提交:?13??解決:?7
[提交][狀態(tài)][討論版]
題目描述
世博會志愿者的選拔工作正在 A 市如火如荼的進(jìn)行。為了選拔最合適的人才,A市對所有報名的選手進(jìn)行了筆試,筆試分?jǐn)?shù)達(dá)到面試分?jǐn)?shù)線的選手方可進(jìn)入面試。面試分?jǐn)?shù)線根據(jù)計劃錄取人數(shù)的150%劃定,即如果計劃錄取m名志愿者,則面試分?jǐn)?shù)線為排名第m*150%(向下取整)名的選手的分?jǐn)?shù),而最終進(jìn)入面試的選手為筆試成績不低于面試分?jǐn)?shù)線的所有選手。
現(xiàn)在就請你編寫程序劃定面試分?jǐn)?shù)線,并輸出所有進(jìn)入面試的選手的報名號和筆試成績。
輸入
第一行,兩個整數(shù)n,m(5 ≤ n ≤ 5000,3 ≤ m ≤ n),中間用一個空格隔開,其中n 表示報名參加筆試的選手總數(shù),m 表示計劃錄取的志愿者人數(shù)。輸入數(shù)據(jù)保證m*150%向下取整后小于等于n。
第二行到第 n+1 行,每行包括兩個整數(shù),中間用一個空格隔開,分別是選手的報名號k(1000 ≤ k ≤ 9999)和該選手的筆試成績s(1 ≤ s ≤ 100)。數(shù)據(jù)保證選手的報名號各不相同。
輸出
第一行,有兩個整數(shù),用一個空格隔開,第一個整數(shù)表示面試分?jǐn)?shù)線;第二個整數(shù)為進(jìn)入面試的選手的實際人數(shù)。
從第二行開始,每行包含兩個整數(shù),中間用一個空格隔開,分別表示進(jìn)入面試的選手的報名號和筆試成績,按照筆試成績從高到低輸出,如果成績相同,則按報名號由小到大的順序輸出。
樣例輸入
6 3 1000 90 3239 88 2390 95 7231 84 1005 95 1001 88樣例輸出
88 5 1005 95 2390 95 1000 90 1001 88 3239 88提示
樣例說明:m*150% = 3*150% = 4.5,向下取整后為4。保證4個人進(jìn)入面試的分?jǐn)?shù)線為88,但因為88有重分,所以所有成績大于等于88的選手都可以進(jìn)入面試,故最終有5個人進(jìn)入面試。
?
1 #include <iostream> 2 #include <cstring> 3 #include <string> 4 #include <algorithm> 5 #include <cmath> 6 using namespace std; 7 struct node 8 { 9 int k,s; 10 }a[5050],b[5050]; 11 bool cmp(node x,node y) 12 { 13 if(x.s==y.s) return x.k< y.k; 14 else return x.s>y.s; 15 } 16 int main() 17 { 18 int n; 19 double m; 20 cin>>n>>m; 21 for(int i=1;i<=n;i++) 22 { 23 cin>>a[i].k>>a[i].s; 24 } 25 sort(a+1,a+n+1,cmp); 26 m=floor(m*1.5); 27 int j=1; 28 for(int i=1;i<=n;i++) 29 { 30 if(j==m+1) 31 { 32 while(a[i].s==b[j-1].s) 33 { 34 35 b[j].k=a[i].k; 36 b[j].s=a[i].s; 37 i++; 38 if(i>n) break; 39 j++; 40 } 41 break; 42 } 43 b[i].k=a[i].k; 44 b[i].s=a[i].s; 45 j++; 46 } 47 cout<<b[j-1].s<<" "<<j-1<<endl; 48 for(int i=1;i<=j-1;i++) 49 { 50 cout<<b[i].k<<" "<<b[i].s<<endl; 51 } 52 return 0; 53 }?
轉(zhuǎn)載于:https://www.cnblogs.com/caiyishuai/p/8521844.html
總結(jié)
以上是生活随笔為你收集整理的zufeoj 分数线划定的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenGL, GLSL, Direct
- 下一篇: 【转】asp.net Core 系列【一