公式
A - 招待状の宛名書き / Addressing Wedding Invitations 解説
by
A - 招待状の宛名書き / Addressing Wedding Invitations 解説
by
physics0523
初心者の方へ
- AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは practice contest の問題A「Welcome to AtCoder」を解いてみてください。基本的な入出力の方法が載っています。
- また、プログラミングコンテストの問題に慣れていない方は、AtCoder Beginners Selection の問題をいくつか解いてみることをおすすめします。
- C++入門 AtCoder Programming Guide for beginners (APG4b) は、競技プログラミングのための C++ 入門用コンテンツです。
- Python入門 AtCoder Programming Guide for beginners (APG4bPython) は、競技プログラミングのための Python 入門用コンテンツです。
配列 \(se,sa\) を用意します。それぞれ、 sensei と呼ぶべき人・ san と呼ぶべき人を管理します。
入力される \(S_i,R_i\) の組ごとに、以下の操作を行えばよいです。
- \(R_i\) が
teacherまたはdoctorなら、 \(se\) の末尾に \(S_i\) を追加する。 - そうでないなら \(sa\) の末尾に \(S_i\) を追加する。
その後、 \(se\) の要素を末尾に sensei を付けながら順に出力、 \(sa\) の要素を末尾に san を付けながら順に出力すればよいです。
一連の流れは for 文と if 文の組み合わせで実現でき、時間計算量は \(O(N)\) です。
実装例 (C++):
#include<bits/stdc++.h>
using namespace std;
int main(){
int N;
cin >> N;
vector<string> se,sa;
for(int i=0;i<N;i++){
string S,R;
cin >> S >> R;
if(R=="teacher" || R=="doctor"){
se.push_back(S);
}
else{
sa.push_back(S);
}
}
for(auto &nx : se){
cout << nx << " sensei\n";
}
for(auto &nx : sa){
cout << nx << " san\n";
}
return 0;
}
投稿日時:
最終更新:
