## 内心OS
**~~莫名感觉自己的代码简单易懂~~**翻了那么多CF的题解Pascal貌似很少,~~想当初学pascal的时候还是小学生~~那就来一波简单粗暴的代码吧,Pascal的字符串函数真的蛮好用的。
------------
## 正经题解
Pos求出S1在S2中的起始位置,如果S1在S2中不存在的话,就返回0。
按照题目意思,我们就先设第一次醒着的时候看到的彩旗序列为Q1,总彩旗序列为S1,第二次醒着看到的彩旗序列设为Q2,然后直接调用Pos函数找到第一次看到Q1的位置,接着调用delete函数删除从S1起始位置一直到Q1末端位置的所有彩旗,这样当我们调用Pos函数查找Q2的出现位置的时候,**就可以保证Q2一定出现在Q1后面并且Q1和Q2没有交集**
------------
## 补充
###### 什么叫没有交集?请看这个例子
###### Luckycloudisextremlyjuruo
###### Luckycloudis
###### is
###### 如果算法中不删除从S1起始位置一直到Q1末端位置的所有彩旗
###### Q1的出现位置就是1( _L_ uckycloudis) ,Q2的出现位置就是11(Luckycloud _i_ s)
###### 显然这样是错误的因为Q1和Q2有交集。
## 思考题
以上介绍的是从A到B站的做饭,至于从B到A站的做法,一模一样,~~我就不赘述了~~我觉得我已经写的很仔细了QAQ
------------
```pascal
var
s,p1,p2,mid:ansistring;
lens,lenp1,lenp2,flag:longint;
i,j,k,l,n,m:longint;
begin
readln(s);
mid:=s;
readln(p1);
lenp1:=length(p1);
readln(p2);
lenp2:=length(p2);
n:=pos(p1,mid);
delete(mid,1,n+lenp1-1);
m:=pos(p2,mid);
if (m>0)and(n>0) then flag:=flag+1;
lens:=length(s);
mid:=s;
for i:=1 to lens do
mid[i]:=s[lens-i+1];
n:=pos(p1,mid);
delete(mid,1,n+lenp1-1);
m:=pos(p2,mid);
if (m>0)and(n>0) then flag:=flag+2;
if flag=3 then writeln('both');
if flag=1 then writeln('forward');
if flag=2 then writeln('backward');
if flag=0 then writeln('fantasy');
end.
```