I’m getting WA again and again in the SPOJ question GCPC11F at jugde 6. Can anyone can tell me which testcase I am getting wrong? Even a hint will help.
Question Link: http://www.spoj.com/problems/GCPC11F/
Here in my Code:
#include<cstdio>
#include<cstring>
#include<cstdlib>
int compare (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
int main()
{
int t,al[26],i,d,len,max,sl[26];
char s[1024];
scanf("%d",&t);
while(t--)
{
fflush(stdin);
gets(s);
for(i=0;i<26;i++)
al[i]=0;
len=strlen(s);
for(i=0;i<len;i++)
{
if(s[i]!=' ')
al[s[i]-'A']++;
}
for(i=0;i<26;i++)
sl[i]=al[i];
qsort(al,26,sizeof(int),compare);
if(al[24]==al[25])
{
printf("NOT POSSIBLE\n");
continue;
}
for(i=0;i<26;i++)
{
if(sl[i]==al[25])
{
max=i;
break;
}
}
d=max+'A'-'E';
if(d<0)
d+=26;
printf("%d ",d);
if(d==0)
{
for(i=0;i<len;i++)
printf("%c",s[i]);
printf("\n");
continue;
}
for(i=0;i<len;i++)
{
if(s[i]==' ')
{
printf("%c",s[i]);
continue;
}
if(s[i]-'A'-d<0)
s[i]=s[i]-d-'A'+'Z'+1;
else
s[i]=s[i]-d;
printf("%c",s[i]);
}
printf("\n");
}
return 0;
}