Submission #1570505


Source Code Expand

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

#define QUEEN_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};
int ex[QUEEN_NUM - 3], ey[QUEEN_NUM - 3]; 
int dis[QUEEN_NUM - 3];

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 check_cross_queens(int queen_num)
{
	int i;

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

void check_act(int dis_num, int queen_num)
{
	int i, j;

	if(queen_num == 7) {
		for(i = 0; i < 5; i++) {
			for(j = 0; j < dis_num; j++)
				if(ex[i] == dis[j])
					break;
			if(j != dis_num)
				continue;
			x[queen_num] = ex[i];
			if(check_cross_queens(queen_num)) {
				update_queens();
				disp_queens();
				exit(0);
			} 
		}
	} else if(queen_num == 3){
		for(i = 0; i < 5; i++) {
			x[queen_num] = ex[i];
			if(!check_cross_queens(queen_num))
				continue;
			dis[dis_num] = x[queen_num];
			check_act(dis_num + 1, queen_num + 1);
		}
	} else {
		for(i = 0; i < 5; i++) {
			for(j = 0; j < dis_num; j++) 
				if(ex[i] == dis[j])
					break;
			if(j != dis_num)
				continue;
			x[queen_num] = ex[i];
			if(!check_cross_queens(queen_num))
				continue;
			dis[dis_num] = x[queen_num];
			check_act(dis_num + 1, queen_num + 1);
		}
	}

}

int main(void)
{
	int i, j, k, l, n, m;
	int queen_num = 0, equeen_num = 0;

	for(i = 0; i < QUEEN_NUM; i++) {
		char ch;
		j = 0;
		while((ch = fgetc(stdin)) != '\n') {
			if(ch == 'Q') {
				y[queen_num] = i;
				x[queen_num] = j;
				queen_num++;
				while(fgetc(stdin) != '\n');
				break;
			}
			j++;
		}
	}

	if(x[0] == x[1] || x[0] == x[2] || x[1] == x[2]) {
		puts("No Answer");
		return 0;
	}
	if(y[0] == y[1] || y[0] == y[2] || y[1] == y[2]) {
		puts("No Answer");
		return 0;
	}
	if(!check_cross_queens(1) || !check_cross_queens(2)) {
		puts("No Answer");
		return 0;
	}

	equeen_num = 0;
	for(i = 0; i < QUEEN_NUM; i++) {
		if(i == x[0] || i == x[1] || i == x[2])
			continue;
		ex[equeen_num++] = i;
	}
	equeen_num = 0;
	for(i = 0; i < QUEEN_NUM; i++) {
		if(i == y[0] || i == y[1] || i == y[2])
			continue;
		ey[equeen_num++] = i;

	}

	for(i = 0; i < 5; i++) {
		y[i + queen_num] = ey[i];
	}

	check_act(0, queen_num);

	puts("No Answers");

	return 0;
}

Submission Info

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

Judge Result

Set Name All
Score / Max Score 0 / 100
Status
AC × 27
WA × 15
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 1 ms 128 KB
00_sample2.txt AC 1 ms 128 KB
01_rnd_00.txt WA 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 WA 1 ms 128 KB
01_rnd_04.txt AC 1 ms 128 KB
01_rnd_05.txt WA 1 ms 128 KB
01_rnd_06.txt WA 1 ms 128 KB
01_rnd_07.txt WA 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 WA 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 1 ms 128 KB
01_rnd_23.txt WA 1 ms 128 KB
01_rnd_24.txt WA 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 WA 1 ms 128 KB
01_rnd_29.txt AC 1 ms 128 KB
01_rnd_30.txt AC 1 ms 128 KB
01_rnd_31.txt WA 1 ms 128 KB
01_rnd_32.txt AC 1 ms 128 KB
01_rnd_33.txt WA 1 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 WA 1 ms 128 KB
01_rnd_39.txt WA 1 ms 128 KB