TOJ-5395 大于中值的边界元素

时间:2023-03-09 23:23:10
TOJ-5395 大于中值的边界元素

描述

给定一个二维数组,求二维数组的边界元素中,大于二维数组“中值”的元素个数。这里的“中值”定义为一个元素序列中:

(1)当元素个数为奇数时,即为中间大的元素;

(2)当元素个数为偶数时,为中间大的两个元素的平均值。

输入

第一行为两个元素n和m,表示二维数组的行数和列数。

接下来又n行,每行m个整数,表示数组元素值。

1<=n,m<=100。

输出

输出大于中值的元素个数。

样例输入

3 3
1 2 3
2 3 1
4 1 5

样例输出

3

提示

中值为2,因此边界元素中大于2的元素个数为3个。

代码测试:

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main(){
vector<vector<int> > v1;
vector<int> v2;
int n,m;
cin>>n>>m;
for(int i=;i<n;i++){
vector<int> p;
for(int j=;j<m;j++){
int a;
cin>>a;
p.push_back(a);
v2.push_back(a);
}
v1.push_back(p);
}
sort(v2.begin(),v2.end());
int num;
if(n*m%!=) num=v2[n*m/];
else num=(v2[n*m/]+v2[n*m/+])*1.0/;
int cnt=;
for(int i=;i<v1.size();i++){
for(int j=;j<v1[i].size();j++){
if(i==||j==||i==v1.size()-||j==v1[i].size()-){
if(v1[i][j]>num)
cnt++;
}
}
}
cout<<cnt<<endl;
}