結果
問題 | No.2226 Hello, Forgotten World! |
ユーザー |
![]() |
提出日時 | 2023-03-02 19:37:51 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 1,138 bytes |
コンパイル時間 | 1,707 ms |
コンパイル使用メモリ | 169,480 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-09-17 13:25:47 |
合計ジャッジ時間 | 2,225 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 9 |
ソースコード
#include<bits/stdc++.h> using namespace std; int main() { int T; cin >> T; string t = "helloworld"; int sz = t.size(); auto fn = [&]( auto it ) { for( int i = 0; i < sz; i++ ) { if( *(it + i) != t[i] && *(it + i) != '?' ) return 0; } return 1; }; for( int i = 0; i < T; i++ ) { int N; string S, S1; cin >> N >> S; int f = 0; for( int j = 0; j + sz <= N; j++ ) { if( S.substr( j, sz ) == t ) { f = 1; break; } } if( f ) { for( int i = 0; i < N; i++ ) { if( S[i] == '?' ) S[i] = 'a'; } cout << S << endl; continue; } S1 = S; f = 0; for( int j = N - sz; j >= 0; j-- ) { if( j + sz <= N ) { if( fn( S.begin() + j ) ) { f = 1; S.replace( j, sz, t ); break; } } } if( f == 0 ) cout << -1 << endl; else { for( int j = 0; j < N; j++ ) { if( j + sz <= N ) { if( fn( S1.begin() + j ) ) { S1.replace( j, sz, t ); break; } } } for( int i = 0; i < N; i++ ) { if( S[i] == '?' ) S[i] = 'a'; if( S1[i] == '?' ) S1[i] = 'a'; } if( S < S1 ) cout << S << endl; else cout << S1 << endl; } } }