Hi, I keep getting WA (Wrong Answer) when I submit my code. I tried using the various data here in the boards (from page 1 to 14), and all my outputs are correct. Even the famous '1 2 3 4 5 6 7 8 9' gives 'BCG 30'.
Can anyone here help me? Thanks.
[c]
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <limits.h>
int main(int argc, char *argv[])
{
int i, j, k;
int ii, jj, kk;
char bintype[] = "BGC";
unsigned long bin1[3],
bin2[3],
bin3[3];
double minmoves;
char binorder[5];
double currsum;
char currbinorder[5];
char dataline[150];
while (!feof(stdin))
{
minmoves = -1;
memset(binorder, 0, sizeof(binorder));
strcpy(binorder, "ZZZ");
memset(dataline, 0, sizeof(dataline));
fgets(dataline, sizeof(dataline)-1, stdin);
sscanf(dataline, "%U %U %U %U %U %U %U %U %U",
&bin1[0], &bin1[1], &bin1[2],
&bin2[0], &bin2[1], &bin2[2],
&bin3[0], &bin3[1], &bin3[2]);
for (i = 1; i < 4; ++i)
{
for (j = 1; j < 4; ++j)
{
if (i != j)
{
for (k = 1; k < 4; ++k)
{
if (i != k && j != k)
{
currsum = 0;
memset(currbinorder, 0, sizeof(currbinorder));
for (ii = 1; ii < 4; ++ii)
{
if (ii != i)
{
currsum += bin1[ii-1];
}
}
for (jj = 1; jj < 4; ++jj)
{
if (jj != j)
{
currsum += bin2[jj-1];
}
}
for (kk = 1; kk < 4; ++kk)
{
if (kk != k)
{
currsum += bin3[kk-1];
}
}
currbinorder[0] = bintype[i-1];
currbinorder[1] = bintype[j-1];
currbinorder[2] = bintype[k-1];
if (currsum < minmoves || minmoves == -1)
{
minmoves = currsum;
strcpy(binorder, currbinorder);
}
else
if (currsum == minmoves && strcmp(currbinorder, binorder) < 0)
strcpy(binorder, currbinorder);
}
}
}
}
}
printf("%s %1.0lf\n", binorder, minmoves);
}
return (0);
}
[/c]
Here's a sample data I passed to the program
Code: Select all
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
5 10 5 20 10 5 10 20 10
2147483648 2147483648 2147483648 2147483648 2147483648 2147483648 2147483648 2147483648 2147483648
The output is:
Code: Select all
BCG 30
BCG 30
CBG 50
BCG 12884901882
