W - 2.06.計算量
ソースコードがネタバレになるので割愛
制約とfor文のネストの数を見ればヒントを読まなくてもわかると思います
EX22 - 2つ目の値でソート
コメントはソートされてないpair配列vecが表示されるかの確認です
問題範囲の10^9は「int 範囲」でgoogle検索してでてきたマイクロソフトの記事を見るに十分そうだったのでintにしました
一番手間取ったのはpairをどう配列にするかでよくわからないからusingで新しい型をつくりました。
2番目はvec.first.at(i)ではなくvec.at(i).firstの順番だったことです。
特に当たってヒントは見ましたがテスト入出力と解答例は見ませんでした。
#include <bits/stdc++.h>
using namespace std;
int main() {
using pii = pair<int, int>;
int n=0;
cin>>n;
vector<pii>vec(n);
for(int i=0;i<n;i++)
{
cin>>vec.at(i).second>>vec.at(i).first;
// cout<<vec.at(i).second<<" "<<vec.at(i).first<<endl;
}
sort(vec.begin(), vec.end());
for(int i=0;i<n;i++)
{
cout<<vec.at(i).second<<" "<<vec.at(i).first<<endl;
}
}
EX23 - 最頻値
if (raw_data[0] <= raw_data[input_a]) の=が重要
APG4b EX23を解いたを参考にしました
こっちのほうが奇麗なコードだと思います
mapのkeyに値を代入、valueに出現回数を加算して出現回数順にソートし、mapの末尾に最頻値とその出現回数が出るのでmapの末尾のkeyとvalueをどうやって取り出せばいいのかとか考えていました。
実際にはそんな必要はなかったです
int main() {
int input_n = 0;
int input_a = 0;
cin >> input_n;
map<int, int> raw_data;
raw_data[0] = 0;
int Number_of_appearances = 0;
for (int i = 0; i < input_n; i++)
{
cin >> input_a;
raw_data[input_a]++;
if (raw_data[0] <= raw_data[input_a])
{
raw_data[0] = raw_data[input_a];
Number_of_appearances = input_a;
}
}
cout << Number_of_appearances << " " << raw_data.at(0) << endl;
}
前回まではストックがあったので5問ずつ更新しています。が、今回からはストックがないので一記事5問までの縛りは変えないまま、問題を解いたら記事を更新していきます。
APG4bで自分が書いたコード1 EX1~EX5
APG4bで自分が書いたコード2 EX6~10
APG4bで自分が書いたコード3EX11~15
APG4bで自分が書いたコード4 EX16~19