ZOJ Special AC String水
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3702
テーマ:
与えられた文字列に対して、次のような要求を満たしてACを出力します.そうしないとWA(省略します)
与えられた文字列はZOJの3文字のみで構成される.ZとJは1つしかなく、Zは左側にあります
J以降のO個数はZ以前のO個数より大きくなければならない
ZとJの間のOの個数はJの後のOの個数より大きくなければならず,それらはいずれも0より大きい.
テーマ:
与えられた文字列に対して、次のような要求を満たしてACを出力します.そうしないとWA(省略します)
与えられた文字列はZOJの3文字のみで構成される.ZとJは1つしかなく、Zは左側にあります
J以降のO個数はZ以前のO個数より大きくなければならない
ZとJの間のOの個数はJの後のOの個数より大きくなければならず,それらはいずれも0より大きい.
#include<cstdio>
#include<cstring>
const int MAXN=1001;
bool ok(char a[])
{
int len=strlen(a);
int z,j;
z=j=-1;
for(int i=0;i<len;i++)
{
if( a[i]!='Z' && a[i] !='O' && a[i] != 'J')
return false;
if(a[i]=='Z' && z==-1) // z
z=i;
else if(a[i]=='Z' && z!=-1)
return false;
if(a[i]=='J' && j==-1) // j
j=i;
else if(a[i]=='J' && j!=-1)
return false;
}
if(j < z) //j z
return false;
if(z+1==j) // O
return false;
if(j-z-1 > len-1-j)
return false;
if(z > len-1-j)
return false;
//o z o j o o
//0 1 2 3 4 5 6
return true;
}
int main()
{
char a[MAXN];
while(~scanf("%s",a))
{
if(ok(a))
printf("Accepted
");
else
printf("Wrong Answer
");
}
}