オリジナルタイトルリンクします。https://codeforces.com/problemset/problem/8/A
ピーターは電車で旅行するのが好き。彼は電車の中で、彼は眠りに落ちること、それはとても好きです。
夏物語ピーターは都市Bに都市Aから電車で行っていた、といつものように、眠っていました。それから彼は、目が覚めた窓から見えるように開始し、すべての鉄道駅は、特定の色の旗を持っていることに気づきました。
少年は、彼が見ていた旗色の順番を記憶し始めました。しかし、すぐに彼は再び眠りに落ちました。残念ながら、彼は長い間寝ていなかった、彼は目が覚めたと色を記憶に行ってきました。その後、彼は再び眠りに落ちた、とその時は彼が旅の終わりまで眠っていました。
駅で彼は彼が何をしていたかについての彼の両親に話した、と彼はそれぞれ、自分の睡眠の前と後に見ていた色の二つの配列を書きました。
ピーターの両親は息子が空想するのが好きということを知っています。彼らはあなたに列車がAからBに向かう途中で順次渡す所でフラグ色のリストを与える、とピーターはBに、またはそれにBからの途中で、それらの配列を見ることができたかどうかを調べるように頼みますA.は、ピーターが覚醒の二つの期間があったことを、覚えておいてくださいしてください。
ピーターの両親は色の小文字のラテン文字を入れました。色違いのために - 同じ文字は同じ色、異なる文字を表します。
入力
入力されたデータは、3行が含まれています。最初の行は、その長さ超えない非空の文字列が含ま 10 5 Bから列車への途中からBへの途中の駅でフラグ色- 、文字列が小文字のラテン文字で構成されてい同じ駅を通過しますが、逆の順番インチ
2行目は覚醒の最初の期間中にピーターによって書かれ、シーケンスが含まれています。第三のラインは、覚醒状態の第二の期間に書き込まれた、配列を含みます。両方の配列は、非空で小文字のラテン文字で構成され、それぞれの長さが100文字を超えることはありません。配列の各々は、年代順に書かれています。
出力
出力引用符なしの4つのワードの1:
- « 進む» -ピーターは唯一のAからBへの途中でこのような配列を見ることができれば、
- « 後方» -ピーターはBからの途中でこのような配列を見ることができれば、
- « 両方の» -ピーターはAからBへの途中で、このような配列の両方を参照してください、そしてBからの途中のことができれば、
- « ファンタジー» -ピーターは、このようなシーケンスを見ることができなかった場合。
例
ATOB B
前方に
aaacaaa
ACA
AA
両方
注意
列車がすべての時間を動かすことが想定されるので、1つのフラグが二度見することができません。ステーションAとBの一切のフラグはありません
質問の意味は、あなたに正の文字列を依頼することです楽しみにして、注文s1とs2を見て後方見ていません
find関数にC ++のSTL文字列を使用して、この質問を解決するのは簡単です
さらに、文字列である機能を反転リバース
値へのクエリが場所を返された使用方法検索機能、いないクエリは、-1の値を返します。
#include<bits/stdc++.h> using namespace std; int main() { string s,s1,s2; while(cin>>s>>s1>>s2) { int a[10]= {0,0}; for(int i=0; i<2; i++) { int h=s.find(s1); if(h != -1) { h = s.find(s2,h+s1.size()); if(h != -1) a[i]=1; } reverse(s.begin(),s.end()); } if(a[0]&&a[1]) cout<<"both"<<endl; else if(a[0]) cout<<"forward"<<endl; else if(a[1]) cout<<"backward"<<endl; else cout<<"fantasy"<<endl; } return 0; }