Hey My code looks perfectly fine to me but it keeps getting WA. Please help.
[c]
#include <stdio.h>
#include <string.h>
int M, N;
char image[250][250], t[250][250];
void traverse(int X, int Y, char C)
{
int ii, jj;
for (ii = Y - 1; ii >= 0 && t[X][ii] == t[X][Y]; ii--)
image[X][ii] = C;
for (ii = X + 1, jj = Y - 1; ii < M && jj >= 0 && t[ii][jj] == t[X][Y]; ii++, jj--)
image[ii][jj] = C;
for (ii = X + 1; ii < M && t[ii][Y] == t[X][Y]; ii++)
image[ii][Y] = C;
for (ii = X + 1, jj = Y + 1; ii < M && jj < N && t[ii][jj] == t[X][Y]; ii++, jj++)
image[ii][jj] = C;
for (ii = Y + 1; ii < N && t[X][ii] == t[X][Y]; ii++)
image[X][ii] = C;
for (ii = X - 1, jj = Y + 1; ii >= 0 && jj < N && t[ii][jj] == t[X][Y]; ii--, jj++)
image[ii][jj] = C;
for (ii = X - 1; ii >= 0 && t[ii][Y] == t[X][Y]; ii--)
image[ii][Y] = C;
for (ii = X - 1, jj = Y - 1; ii >= 0 && jj >= 0 && t[ii][jj] == t[X][Y]; ii--, jj--)
image[ii][jj] = C;
}
int main(void)
{
char command, C, name[12], buffer[100];
int X, Y, X1, X2, Y1, Y2, ii, jj, temp;
while (fgets(buffer, 100, stdin))
{
command = buffer[0];
buffer[0] = ' ';
switch (command)
{
case 'I': sscanf(buffer, " %d %d", &M, &N);
case 'C': memset(image, 'O', sizeof(char) * 62500);
break;
case 'L': sscanf(buffer, " %d %d %c", &X, &Y, &C);
image[X - 1][Y - 1] = C;
break;
case 'V': sscanf(buffer, " %d %d %d %c", &X, &Y1, &Y2, &C);
if (Y1 > Y2)
{
temp = Y1;
Y1 = Y2;
Y2 = temp;
}
for (ii = Y1 - 1; ii < Y2; ii++)
image[X - 1][ii] = C;
break;
case 'H': sscanf(buffer, " %d %d %d %c", &X1, &X2, &Y, &C);
if (X1 > X2)
{
temp = X1;
X1 = X2;
X2 = temp;
}
for (ii = X1 - 1; ii < X2; ii++)
image[ii][Y - 1] = C;
break;
case 'K': sscanf(buffer, " %d %d %d %d %c", &X1, &Y1, &X2, &Y2, &C);
if (X1 > X2)
{
temp = X1;
X1 = X2;
X2 = temp;
}
if (Y1 > Y2)
{
temp = Y1;
Y1 = Y2;
Y2 = temp;
}
for (jj = Y1 - 1; jj < Y2; jj++)
for (ii = X1 - 1; ii < X2; ii++)
image[ii][jj] = C;
break;
case 'F': sscanf(buffer, " %d %d %c", &X, &Y, &C);
memcpy(t, image, sizeof(char) * 62500);
for (ii = Y - 1; ii >= 0 && t[X][ii] == t[X][Y]; ii--)
traverse(X, ii, C);
for (ii = X + 1, jj = Y - 1; ii < M && jj >= 0 && t[ii][jj] == t[X][Y]; ii++, jj--)
traverse(ii, jj, C);
for (ii = X + 1; ii < M && t[ii][Y] == t[X][Y]; ii++)
traverse(ii, Y, C);
for (ii = X + 1, jj = Y + 1; ii < M && jj < N && t[ii][jj] == t[X][Y]; ii++, jj++)
traverse(ii, jj, C);
for (ii = Y + 1; ii < N && t[X][ii] == t[X][Y]; ii++)
traverse(X, ii, C);
for (ii = X - 1, jj = Y + 1; ii >= 0 && jj < N && t[ii][jj] == t[X][Y]; ii--, jj++)
traverse(ii, jj, C);
for (ii = X - 1; ii >= 0 && t[ii][Y] == t[X][Y]; ii--)
traverse(ii, Y, C);
for (ii = X - 1, jj = Y - 1; ii >= 0 && jj >= 0 && t[ii][jj] == t[X][Y]; ii--, jj--)
traverse(ii, jj, C);
image[X][Y] = C;
break;
case 'S': sscanf(buffer, " %s", name);
printf("%s\n", name);
for (jj = 0; jj < N; jj++)
for (ii = 0; ii < M; ii++)
if (ii < M - 1)
printf("%c", image[ii][jj]);
else
printf("%c\n", image[ii][jj]);
memset(image, 'O', sizeof(char) * 62500);
break;
case 'X': return 0;
}
}
return 0;
}
[/c]

