kotonoha_pcg@ぷろこんにっき

ここ(http://kotonoha-pcg.hatenablog.com/)の別館です、競プロの話が殆どです。最近mdモードに変えて一気に使い勝手が変わりました。

CF316

 8/14(だったよね?)のCF#316について.Aは英語読めかけて開放も大体予想着いたけど,実装出来ずに無理,Bは中核になる(と思っていた)部分含む,英文読めなくて即死.

CF 316 A

 n*mの配列作ってそこに入力.別にもう一つ配列を作って,前の二次元配列の結果を入れる.解法は,n*mの内,各m回においての数値のうち最大値(複数有る場合は配列の要素数が少ない方)を選び,それを後者の配列の要素数にたいおうさせて++すればいい・・・・

というのを考えていたが,実装してなかった.後で調べてみると,STLにmax_elementなるものがあって,それを用いてコードを書いてる人が多かった.max_elementはコンテナ(配列も大丈夫そう)から最大の要素を返すようで,そこに-配列[i]するコードが多かったと思う.で,以下に実装コードを示す.

#include <bits/stdc++.h>
using namespace std;
int a[100][100],b,ans[100];
int main(){
	int n,m;
	cin>>n>>m;

	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			cin>>a[i][j];
		}
	}
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			b=max_element(a[i],a[i]+m)-a[i];
			ans[b]++;
		}
	}
	cout<<max_element(ans,ans+m)-ans+1;
	cout<<endl;
	return 0;
}