Problem Description
Today is the 1st anniversary of BestCoder. Soda, the contest manager, gets a string s of length n. He wants to find three nonoverlapping substrings s[l1..r1], s[l2..r2], s[l3..r3] that:
1. 1≤l1≤r1<l2≤r2<l3≤r3≤n
2. The concatenation of s[l1..r1], s[l2..r2], s[l3..r3] is "anniversary".
1. 1≤l1≤r1<l2≤r2<l3≤r3≤n
2. The concatenation of s[l1..r1], s[l2..r2], s[l3..r3] is "anniversary".
Input
There are multiple test cases. The first line of input contains an integer T (1≤T≤100), indicating the number of test cases. For each test case:
There's a line containing a string s (1≤|s|≤100) consisting of lowercase English letters.
There's a line containing a string s (1≤|s|≤100) consisting of lowercase English letters.
Output
For each test case, output "YES" (without the quotes) if Soda can find such thress substrings, otherwise output "NO" (without the quotes).
Sample Input
2
annivddfdersewwefary
nniversarya
Sample Output
YES
NO
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 char s1[20]={"anniversary"}; 6 char s2[111]; 7 int pos,ll; 8 void dfs(int x,int y,int k) 9 { 10 if (k<=3&&y>=11) 11 { 12 pos=1; 13 return ; 14 } 15 int i,z; 16 if (pos||k>3||x>=ll) return ; 17 for (i=x;i<ll;i++) 18 { 19 if (s2[i]!=s1[y]) continue; 20 x=i; 21 z=y; 22 while (s2[x]==s1[z]&&x<ll&&z<11) 23 { 24 z++; 25 x++; 26 } 27 dfs(x,z,k+1); 28 } 29 } 30 int main() 31 { 32 int t,i,j; 33 scanf("%d",&t); 34 getchar(); 35 while (t--) 36 { 37 scanf("%s",&s2); 38 ll=strlen(s2); 39 pos=0; 40 dfs(0,0,0); 41 if (pos) printf("YES\n"); 42 else printf("NO\n"); 43 } 44 }