美団筆記試験問題(2020.4.16第1題)
タイトル
ある学校の期末試験にはn人の学生が参加し、試験科目にはm科がある.学校は一部の学生に単科成績優秀賞を授与し、受賞学生が満たす条件はある科の成績がすべての学生の中で最も高いか、最も高いかの一つである.すみません、学校は何人の学生に単科成績優秀賞を授与すべきですか.
入力入力の最初の行には、学生数と試験科目数を表す2つの正の整数nとmが含まれます.(n,m<=500)次にn行あり、各行にm個の正の整数があり、各正の整数は1-100の間で、中間はスペースで区切られ、各学生のm科試験の成績を表す.
出力出力は1つの整数のみを含み、単科成績優秀賞を受賞した人数を表す.
サンプル入力:5 5 28 35 38 10 19 4 76 72 38 86 96 80 81 17 10 70 64 86 85 10 1 93 19 34 41
サンプル出力:4
解題コード
ある学校の期末試験にはn人の学生が参加し、試験科目にはm科がある.学校は一部の学生に単科成績優秀賞を授与し、受賞学生が満たす条件はある科の成績がすべての学生の中で最も高いか、最も高いかの一つである.すみません、学校は何人の学生に単科成績優秀賞を授与すべきですか.
入力入力の最初の行には、学生数と試験科目数を表す2つの正の整数nとmが含まれます.(n,m<=500)次にn行あり、各行にm個の正の整数があり、各正の整数は1-100の間で、中間はスペースで区切られ、各学生のm科試験の成績を表す.
出力出力は1つの整数のみを含み、単科成績優秀賞を受賞した人数を表す.
サンプル入力:5 5 28 35 38 10 19 4 76 72 38 86 96 80 81 17 10 70 64 86 85 10 1 93 19 34 41
サンプル出力:4
解題コード
#include<iostream>
#include<algorithm>
#include<stdio.h>
using namespace std;
int main() {
int n,m;
int arr[50][50],copy_arr[50][50];
freopen("in.txt","r",stdin);
scanf("%d%d",&n,&m);
//
for(int i=0; i<n; i++) {
for(int j=0; j<m; j++) {
scanf("%d",&arr[i][j]);
copy_arr[i][j]=arr[i][j];
//printf("%d ",arr[i][j]);
}
//printf("
");
}
int flag[50]={0};//flag[i]=0
int sum=0;// ;
//fill(flag,flag+50,0);
for(int j=0; j<m; j++) {
/*
, ;
,
*/
for(int i=0; i<n-1; i++) {
if(copy_arr[i][j]>copy_arr[i+1][j]){
//swap(arr[i][j],arr[i+1][j]);
int tmp1=copy_arr[i][j];
copy_arr[i][j]=copy_arr[i+1][j];
copy_arr[i+1][j]=tmp1;
}
}
int tmp=copy_arr[n-1][j];
//printf("%d
",tmp);
for(int k=0; k<n; k++) {
if(arr[k][j]==tmp && flag[k]==0){
//num[j]++;
flag[k]=1;
//printf("%d %d
",k,j);
}
}
}
for(int i=0;i<n;i++){
//printf("%d
",flag[i]);
if(flag[i]==1)
sum+=flag[i];
}
printf("%d
",sum);
return 0;
}