hntk03.com
Posts

AtCoder Beginner Contest 342 参加記録

2024/02/25

#競プロ

はじめに

AtCoder Beginner Contest 342に参加した記録です。

performance

A問題(Yay!)

無駄な手順が多いですが、とりあえず、ACできました。

  1. 1つだけの文字を取得
  2. その文字のインデックスを取得
A.cpp
const int INF = 1e9;
int main(void){
string s; cin >> s;
map<char, int> m;
REP(i,s.length()){
m[s[i]]++;
}
char c;
REP(i,s.length()){
if(m[s[i]] == 1){
c = s[i];
}
}
REP(i,s.length()){
if(s[i] == c){
cout << i + 1 << endl;
}
}
return 0;
}

B問題(Which is ahead?)

人の番号をインデックスに持つ配列を用意し、その要素には、人の並んでいる順番を持つようにしました。

B.cpp
int main(void){
int N; cin >> N;
vector<int> P(N+1);
REP(i,N){
int p; cin >> p;
P[p] = i;
}
int Q; cin >> Q;
vector<int> A(Q), B(Q);
REP(i,Q){
cin >> A[i] >> B[i];
}
REP(i,Q){
int ans = min(P[A[i]], P[B[i]]);
if(P[A[i]] < P[B[i]]) cout << A[i] << endl;
else cout << B[i] << endl;
}
return 0;
}

C問題(Many Replacement)

アルファベットの変換表を用意し、操作を変換表に反映させます。 最後に、その変換表を使って文字列Sを変換して表示します。

C.cpp
int main(void){
int N; cin >> N;
string S; cin >> S;
int Q; cin >> Q;
vector<char> to(26);
REP(i,26){
to[i] = i+'a';
}
REP(i,Q){
char c, d; cin >> c >> d;
REP(j,26){
if(to[j] == c){
to[j] = d;
}
}
}
REP(i,N){
cout << to[S[i]-'a'];
}
cout << endl;
return 0;
}
← Back to All Posts