Page 1 of 1

getting WA

Posted: Tue Jan 25, 2011 10:41 pm
by amin__
hello dear friends
can anyone help me with this problem?? I have checked almost all case posted before but my code gives correct output..can anyone help me to find bug of my code??? please help..

here is my code...

#include<cstdio>
#include<cstring>

long long mem[1000][1000];
int main()
{

int w,n,i,k,j,C,l,linef;
char str[10000],subs[10000];
scanf("%d",&C);
getchar();
linef=0;
while(C--)
{
if(linef) printf("\n");
linef=1;

scanf("%d%d",&w,&n);
//for(i=0;i<w;i++) for(j=0;j<n;j++) mem[j]=0;


mem[0][0]=1;
/*for(i=0;i<w;i++)
{
for(j=0;j<n;j++)
{
if(i==0)
mem[j]=0;
if(j==0)
mem[j]=0;
if(i&&j) mem[j]=0;
}
}*/

getchar();
for(i=0;i<w;i++)
{

gets(str);
//puts(str);

int len=strlen(str);
int howmany=0;
k=0;
for(j=0;j<len;j++) /*number conversion from string*/
{
if(str[j]==' ' || j==len-1)
{
if(j==len-1) subs[k++]=str[j];
subs[k]='\0';
//puts(subs);
k=0;
int sublen=strlen(subs);
int num=0;
int p=1;
for(l=sublen-1;l>=0;l--)
{
num+=(p*(subs[l]-'0'));
}
if(howmany>=1) mem[num-1]=-1;
//printf("%d\n",num);
howmany++;
}
else
{
subs[k++]=str[j];
}
}



}

for(i=1;i<n;i++) /*initializing base case*/
{
if(mem[0]!=-1)
mem[0]=mem[0][i-1];
}
for(i=1;i<w;i++)
{
if(mem[0]!=-1)
mem[0]=mem[i-1][0];
}

//mem[0][0]=1;

for(i=1;i<w;i++)
{
for(j=1;j<n;j++)
{
if(mem[j]!=-1)
{
if(mem[i-1][j]==-1 && mem[i][j-1]==-1)
{
mem[i][j]=-1;
}
else if(mem[i-1][j]==-1)
{
mem[i][j]=mem[i][j-1];
}
else if(mem[i][j-1]==-1)
{
mem[i][j]=mem[i-1][j];
}
else
{
mem[i][j]=mem[i][j-1]+mem[i-1][j];
}
}
}
}



if(mem[w-1][n-1]==-1) printf("0\n");
//else if(mem[w-1][n-1]==0) printf("1\n");
else
printf("%lld\n",mem[w-1][n-1]);
//getchar();

for(i=0;i<w;i++) /*initializing arrays*/
{
for(j=0;j<n;j++)
{
mem[i][j]=0;
}
}

}
return 0;
}