QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#562515#8935. Puzzle: Easy as ScrabbleyhdddRE 0ms0kbC++201.8kb2024-09-13 18:05:002024-09-13 18:05:00

Judging History

This is the latest submission verdict.

  • [2024-09-13 18:05:00]
  • Judged
  • Verdict: RE
  • Time: 0ms
  • Memory: 0kb
  • [2024-09-13 18:05:00]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;
int n, m, ans = true, L[1010], R[1010], U[1010], D[1010];
char a[1010][1010];
void dfs(int x, int y){
	if(x < 1 || x > n || y < 1 || y > m || L[x] > R[x] || U[y] > D[y]) ans = false;
	if(!ans) return;
	if(a[x][y] != 'x'){
		char c = '\0';
		bool fl = false;
		if(L[x] == y){
			if(c == '\0') c = a[x][0];
			else if(c != a[x][0]) fl = true;
		}
		if(!fl && R[x] == y){
			if(c == '\0') c = a[x][m + 1];
			else if(c != a[x][m + 1]) fl = true;
		}
		if(!fl && U[y] == x){
			if(c == '\0') c = a[0][y];
			else if(c != a[0][y]) fl = true;
		}
		if(!fl && D[y] == x){
			if(c == '\0') c = a[n + 1][y];
			else if(c != a[n + 1][y]) fl = true;
		}
		if(!fl) return;
		a[x][y] = 'x';
	}
	if(L[x] == y){ L[x]++; dfs(x, y + 1); }
	if(R[x] == y){ R[x]--; dfs(x, y - 1); }
	if(U[y] == x){ U[y]++; dfs(x + 1, y); }
	if(D[y] == x){ D[y]--; dfs(x - 1, y); }
}
int main()
{
	freopen("easy.in", "r", stdin);
	freopen("easy.out", "w", stdout);
	int i, j, x, y;
	scanf("%d%d", &n, &m);
	for(i = 0; i <= n + 1; i++){
		scanf("%s", a[i]);
	}
	for(i = 1; i <= n; i++){
		L[i] = (a[i][0] == '.' ? 0 : 1);
		R[i] = (a[i][m + 1] == '.' ? m + 1 : m);
	}
	for(i = 1; i <= m; i++){
		U[i] = (a[0][i] == '.' ? 0 : 1);
		D[i] = (a[n + 1][i] == '.' ? n + 1 : n);
	}
	for(i = 1; i <= n; i++){
		dfs(i, 1); dfs(i, m);
	}
	for(i = 1; i <= m; i++){
		dfs(1, i); dfs(n, i);
	}
	if(!ans){ printf("NO"); return 0; }
	for(i = 1; i <= n; i++){
		if(L[i] > 0) a[i][L[i]] = a[i][0];
		if(R[i] <= m) a[i][R[i]] = a[i][m + 1];
	}
	for(i = 1; i <= m; i++){
		if(U[i] > 0) a[U[i]][i] = a[0][i];
		if(D[i] > 0) a[D[i]][i] = a[n + 1][i];
	}
	printf("YES\n");
	for(i = 1; i <= n; i++){
		for(j = 1; j <= m; j++){
			if(a[i][j] == 'x') printf(".");
			else printf("%c", a[i][j]);
		}
		printf("\n");
	}
	return 0;
}

详细

Test #1:

score: 0
Dangerous Syscalls

input:

5 5
.CBA...
....x..
..x...C
A.....B
B..x..A
C......
.......

output:


result: