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; }