B - Legendary Players Editorial
by
marc2825
フォーマットに注目して埋め込みを整形せず活用する
この問題で与えられているデータのフォーマットは各行全て
『(ハンドルネーム)(空白1つ)(4桁の数字)』
であるため、ハンドルネームから右に2~5文字進んだ位置に対応する文字列が求めるレートとなります。
よって、開始位置を1文字ずつ前から愚直に探索して、ハンドルネームと一致するタイミングを見つければ、埋め込んだデータの整形などをせずとも問題に答えることが出来ます。
C++による解答例:
#include <bits/stdc++.h>
using namespace std;
int main() {
string T = R"(tourist 3858
ksun48 3679
Benq 3658
Um_nik 3648
apiad 3638
Stonefeang 3630
ecnerwala 3613
mnbvmar 3555
newbiedmy 3516
semiexp 3481)";
string S; cin >> S;
for(int i=0; i<T.size(); i++) {
if(T.substr(i, S.size()) == S) {
cout << T.substr(i + S.size() + 1, 4) << endl;
return 0;
}
}
}
(ここで、複数行からなる文字列を一つの文字列とみなすために、C++の「生文字列リテラル」と呼ばれる言語仕様を用いております。
参考 : https://cpprefjp.github.io/lang/cpp11/raw_string_literals.html )
posted:
last update: