样例全过却0分
查看原帖
样例全过却0分
1118614
I_Love_DS楼主2024/3/22 15:48

样例全过却 00 分。

#include <bits/stdc++.h>
using namespace std;
int n,maxrow = -15,maxline = -15;
char out = '.';
struct puzzle {
	char b;
	int r,s,u,d;
	int row,line;
} a[30];
int b[205][205],s[205][205];
struct order {
	int put,id;
} c[30];
bool cmp(const order &x,const order &y){
	return x.put < y.put;
}
int main(){
	scanf("%d",&n);
	getchar();
	for (int i = 1; i <= n; i++) scanf("%c%d%d%d%d",&a[i].b,&a[i].r,&a[i].s,&a[i].u,&a[i].d),getchar();
	for (int i = 1; i <= n; i++) scanf("%d",&c[i].put),c[i].id = i;
	sort(c + 1,c + n + 1,cmp);
	for (int i = 1; i <= n; i++) {
		int k = a[c[i].id].b - 'a' + 1,setrow,setline;
		if (i == 1) {
			setrow = 1;
			setline = 1;
		}
		else {
			if (a[c[i - 1].id].u == 0) {
				setrow = a[c[i - 1].id].row + a[c[i - 1].id].r;
				setline = a[c[i - 1].id].line + a[c[i - 1].id].d - 1;
			}
			else {
				setrow = a[c[i - 1].id].row + a[c[i - 1].id].r - a[c[i - 1].id].d;
				setline = a[c[i - 1].id].line + a[c[i - 1].id].s;
			}
		}
		b[setrow][setline] += k;
		b[setrow][setline + a[c[i].id].s] -= k;
		b[setrow + a[c[i].id].r][setline] -= k;
		b[setrow + a[c[i].id].r][setline + a[c[i].id].s] += k;
		a[c[i].id].row = setrow;
		a[c[i].id].line = setline;
		maxrow = max(maxrow,setrow + a[c[i].id].r - 1);
		maxline = max(maxline,setline + a[c[i].id].s - 1);
	}
	for (int i = 1; i <= maxrow; i++) 
		for (int j = 1; j <= maxline; j++) 
			s[i][j] = s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1] + b[i][j];
	printf("%d %d\n",maxrow,maxline);
	for (int i = maxrow; i >= 1; i--) {
		for (int j = 1; j <= maxline; j++) printf("%c",s[i][j] != 0 ? s[i][j] + 'a' - 1 : out);
		printf("\n");
	}
	return 0;
}
2024/3/22 15:48
加载中...