Submission #1572084


Source Code Expand

#include <stdio.h>
#include <stdlib.h>

#define QUEEN_NUM 8
#define COLUMN_NUM 8

char queen_p[QUEEN_NUM + 1][QUEEN_NUM + 1] = {
	"........",
	"........",
	"........",
	"........",
	"........",
	"........",
	"........",
	"........",
	"........"
};

int x[QUEEN_NUM] = {8, 8, 8, 8, 8, 8, 8, 8};
int y[QUEEN_NUM] = {8, 8, 8, 8, 8, 8, 8, 8};

void update_queens(void)
{
	int i;

	for(i = 0; i < QUEEN_NUM; i++)
		queen_p[y[i]][x[i]] = 'Q';
}

void disp_queens(void)
{
	int i, j;

	for(i = 0; i < QUEEN_NUM; i++) {
		for(j = 0; j < QUEEN_NUM; j++) {
			printf("%c", queen_p[i][j]);
		}
		puts("");
	}

}

int is_exists_in_cross(int queen_num)
{
	int i;

	for(i = 0; i < queen_num; i++)
		if(abs(x[queen_num] - x[i]) == abs(y[queen_num] - y[i]))
			return 1;
	return 0;
}

int is_exists_in_column(int queen_num)
{
	int i;

	for(i = 0; i < queen_num; i++)
		if(x[queen_num] == x[i])
			return 1;
	return 0;
}

void queen(int queen_num)
{
	int i;

	if(queen_num == QUEEN_NUM - 1) {
		for(i = 0; i < COLUMN_NUM; i++) {
			x[queen_num] = i;
			if(is_exists_in_column(queen_num))
				continue;
			if(is_exists_in_cross(queen_num))
				continue;
			update_queens();
			disp_queens();
			exit(0);
		}
	} else {
		for(i = 0; i < COLUMN_NUM; i++) {
			x[queen_num] = i;
			if(is_exists_in_column(queen_num))
				continue;
			if(is_exists_in_cross(queen_num))
				continue;
			queen(queen_num + 1);
		}
	}
}

int main(void)
{
	int i, j, queen_i, queen_fix;

	// read data
	{
		for(i = queen_i = 0; i < QUEEN_NUM; i++) {
			char ch;
			int Q_ctr = 0;

			for(j = 0; (ch = fgetc(stdin)) != '\n'; j++) {
				if(ch == 'Q') {
					if(Q_ctr++ >= 2) 
						goto noanswer;

					x[queen_i] = j;
					y[queen_i] = i;
					if(is_exists_in_cross(queen_i))
						goto noanswer;
					if(is_exists_in_column(queen_i))
						goto noanswer;
					queen_i++;
				}
			}
		}
	}
	queen_fix = queen_i;

	// load y
	for(i = 0; i < QUEEN_NUM; i++){
		if(i == y[0] || i == y[1] || i == y[2])
			continue;
		y[queen_i++] = i;
	}

	// queen
	queen(queen_fix);

noanswer:
	puts("No Answer");
	return 0;
}


Submission Info

Submission Time
Task C - パズルのお手伝い
User n_kei
Language C (GCC 5.4.1)
Score 0
Code Size 2198 Byte
Status WA
Exec Time 1 ms
Memory 128 KB

Judge Result

Set Name All
Score / Max Score 0 / 100
Status
AC × 40
WA × 2
Set Name Test Cases
All 00_sample1.txt, 00_sample2.txt, 01_rnd_00.txt, 01_rnd_01.txt, 01_rnd_02.txt, 01_rnd_03.txt, 01_rnd_04.txt, 01_rnd_05.txt, 01_rnd_06.txt, 01_rnd_07.txt, 01_rnd_08.txt, 01_rnd_09.txt, 01_rnd_10.txt, 01_rnd_11.txt, 01_rnd_12.txt, 01_rnd_13.txt, 01_rnd_14.txt, 01_rnd_15.txt, 01_rnd_16.txt, 01_rnd_17.txt, 01_rnd_18.txt, 01_rnd_19.txt, 01_rnd_20.txt, 01_rnd_21.txt, 01_rnd_22.txt, 01_rnd_23.txt, 01_rnd_24.txt, 01_rnd_25.txt, 01_rnd_26.txt, 01_rnd_27.txt, 01_rnd_28.txt, 01_rnd_29.txt, 01_rnd_30.txt, 01_rnd_31.txt, 01_rnd_32.txt, 01_rnd_33.txt, 01_rnd_34.txt, 01_rnd_35.txt, 01_rnd_36.txt, 01_rnd_37.txt, 01_rnd_38.txt, 01_rnd_39.txt
Case Name Status Exec Time Memory
00_sample1.txt AC 0 ms 128 KB
00_sample2.txt AC 1 ms 128 KB
01_rnd_00.txt AC 1 ms 128 KB
01_rnd_01.txt AC 1 ms 128 KB
01_rnd_02.txt WA 1 ms 128 KB
01_rnd_03.txt AC 1 ms 128 KB
01_rnd_04.txt AC 0 ms 128 KB
01_rnd_05.txt AC 1 ms 128 KB
01_rnd_06.txt AC 1 ms 128 KB
01_rnd_07.txt AC 1 ms 128 KB
01_rnd_08.txt AC 1 ms 128 KB
01_rnd_09.txt WA 1 ms 128 KB
01_rnd_10.txt AC 1 ms 128 KB
01_rnd_11.txt AC 1 ms 128 KB
01_rnd_12.txt AC 1 ms 128 KB
01_rnd_13.txt AC 1 ms 128 KB
01_rnd_14.txt AC 1 ms 128 KB
01_rnd_15.txt AC 1 ms 128 KB
01_rnd_16.txt AC 1 ms 128 KB
01_rnd_17.txt AC 1 ms 128 KB
01_rnd_18.txt AC 1 ms 128 KB
01_rnd_19.txt AC 1 ms 128 KB
01_rnd_20.txt AC 1 ms 128 KB
01_rnd_21.txt AC 1 ms 128 KB
01_rnd_22.txt AC 0 ms 128 KB
01_rnd_23.txt AC 1 ms 128 KB
01_rnd_24.txt AC 1 ms 128 KB
01_rnd_25.txt AC 1 ms 128 KB
01_rnd_26.txt AC 1 ms 128 KB
01_rnd_27.txt AC 1 ms 128 KB
01_rnd_28.txt AC 1 ms 128 KB
01_rnd_29.txt AC 1 ms 128 KB
01_rnd_30.txt AC 0 ms 128 KB
01_rnd_31.txt AC 1 ms 128 KB
01_rnd_32.txt AC 1 ms 128 KB
01_rnd_33.txt AC 0 ms 128 KB
01_rnd_34.txt AC 1 ms 128 KB
01_rnd_35.txt AC 1 ms 128 KB
01_rnd_36.txt AC 1 ms 128 KB
01_rnd_37.txt AC 1 ms 128 KB
01_rnd_38.txt AC 1 ms 128 KB
01_rnd_39.txt AC 1 ms 128 KB