OJ 1101 誰是中間的那個
前言:主要考察排序用法
sort(cow+1,cow+1+n,cmp);//數組按cmp方法排序
Description
一天,農夫喬伊像往常一樣來到了他的牧場,他突然對他的奶牛產奶量產生了興趣。他想知道產奶量處于中間的那頭奶牛的產奶量是多少,處于中間的意思是說,其中有一半牛的產奶量比它多,另一半牛的產奶量比它少。
這個問題現在交由你來寫程序完成!
Input
有多組測試數據,第一行一個正整數T(1<=T<=20),接下來T行,每行第一個正整數為奇數N不會超過10^5,接下來N數字代表第i(1<=i<=N)頭牛的產奶量。
Output
輸出產奶量處于中間的牛的產奶量。
Sample Input
1
5 1 2 4 5 3
Sample Output
3
// // main.cpp // CPlusDemo // // Created by HF on 2018/5/15. // Copyright ? 2018年 HF-Liqun. All rights reserved. // #include <iostream> #include <algorithm> #include <cstdio> using namespace std; typedef struct { int MakeMilk; //牛奶產量 int num; //序號 } COW; COW cow[100005];//正整數為奇數N不會超過10^5 即 N最大為 100000 + 5 (+5防止數組越界) //比較奶牛產奶量 降序 bool cmp(COW A,COW B) { if (A.MakeMilk > B.MakeMilk) { return true; } if (A.MakeMilk == B.MakeMilk && A.num > B.num) { return true; } return false; } int main(int argc, const char * argv[]) { // insert code here... int t; int n; scanf("%d",&t);//一共t組數據 while (t > 0) { scanf("%d",&n); for (int i = 1;i <= n; i ++) { scanf("%d",&cow[i].MakeMilk); cow[i].num = i; } //輸入結束 //排序開始 sort(cow+1,cow+1+n,cmp);//從index區間[1,n]的集合進行排序 printf("%d\n",cow[(n+1)/2].MakeMilk); t --; } return 0; }
posted on 2018-05-16 00:00 ACM_Someone like you 閱讀(505) 評論(0) 收藏 舉報
浙公網安備 33010602011771號