链接:http://codeforces.com/contest/1440/problem/B
题意:给n*k个数,分为k组每组n个数,求中位数的最大值。
思路:找到每组中位值所在的位置,前面用最小的数填充,剩下的位置按递增序列平均分k组,每组最前面的数就是中位数的最优解。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int a;
int main(){
int t;
cin>>t;
while(t--){
int n,k;
cin>>n>>k;
int id;
if(n&1) id=n/2+1;
else id=n/2;
ll sum=0,cnt=0;
for(int i=1;i<=n*k;i++){
cin>>a;
if((id-1)*k<i){
cnt++;
if(cnt==1)
sum+=a;
if(cnt+id>n)cnt=0;
}
}
cout<<sum<<endl;
}
}