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 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
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,'\0',sizeof(str));
scanf("%s",str);
flog=0;
l=strlen(str);
dfs(0,0,0);
if(flog)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}