Hidden String
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 1677 Accepted Submission(s): 589
Total Submission(s): 1677 Accepted Submission(s): 589
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 ofs[l1..r1] ,
s[l2..r2] ,
s[l3..r3]
is "anniversary".
1.
2. The concatenation of
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 strings
(1≤|s|≤100)
consisting of lowercase English letters.
There's a line containing a string
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
Source
Recommend
hujie | We have carefully selected several similar problems for you: 5594 5593 5592 5591 5590
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; char str[1010],op[13]={"anniversary"}; int flog,l,L; void dfs(int b1,int b2,int num) { int i; if(b2>=11&&num<=3) { flog=1; return ; } if(num>3) return ; if(b1>=l||flog) return ; for(i=b1;i<l;i++) { int x=i; int y=b2; while(str[x]==op[y]&&x<l&&y<11) { x++,y++; } dfs(x+1,y,num+1); } } int main() { int t; scanf("%d",&t); while(t--) { L=strlen(op); memset(str,' ',sizeof(str)); scanf("%s",str); flog=0; l=strlen(str); dfs(0,0,0); if(flog) printf("YES "); else printf("NO "); } return 0; }