U129272 20WA了求助
  • 板块学术版
  • 楼主hw1901郑钰凡
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/5/19 14:47
  • 上次更新2023/11/4 23:04:44
查看原帖
U129272 20WA了求助
304869
hw1901郑钰凡楼主2021/5/19 14:47
#include<bits/stdc++.h>
using namespace std;
#define loop(a) for(int i=1;i<=a;i++)
#define doop(b) for(int j=1;j<=b;j++)
int n,m,a,b,ma[100][3],xi[100][3],jz;
bool qp[2100][2100];
bool zd[2010][2010];
inline int read() {
	register int s=0,w=1;
	char ch=getchar();
	while(ch<'0'||ch>'9') {
		if(ch=='-')w=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9')s=s*10+ch-'0',ch=getchar();
	return s*w;
}
inline void print(int x) {
	if(x<0) {
		putchar('-');
		x=-x;
	}
	if(x>9)print(x/10);
	putchar(x%10+'0');
}
int dx[9]= {0,1,1,2,2,-1,-1,-2,-2};
int dy[9]= {0,2,-2,1,-1,2,-2,1,-1};
int cc[10001];
int cnt=0,ans=0; 
void zh(int i,int b) {
	while(i) {
		cc[cnt++]=i%b;
		i/=b;
	}	
}
void my(int x,int y) {
	if(x>=1&&x<=n&&y>=1&&y<=m) qp[x][y]=true;
	else return;
	loop(8) 
		if(x+dx[i]>=1&&x+dx[i]<=n&&y+dy[i]>=1&&y+dy[i]<=m) 
			qp[x+dx[i]][y+dy[i]]=true;
	
}
void xy(int x,int y) {
	if(x>=1&&x<=n&&y>=1&&y<=m) qp[x][y]=true;
	else return;
	for(int k=x,l=y;k>=1&&l>=1&&!zd[k-1][l-1];k--,l--) qp[k][l]=1;
    for(int k=x,l=y;k<=n&&l<=m&&!zd[k+1][l+1];k++,l++) qp[k][l]=1;
    for(int k=x,l=y;k>=1&&l<=m&&!zd[k-1][l+1];k--,l++) qp[k][l]=1;
    for(int k=x,l=y;k<=n&&l>=1&&!zd[k+1][l-1];k++,l--) qp[k][l]=1;
}
int main() {
	n=read();
	m=read();
	a=read();
	b=read();
	loop(a) {
		ma[i][1]=read();
		ma[i][2]=read();
		zd[ma[i][1]][ma[i][2]]=true;
	}
	loop(b) {
		xi[i][1]=read();
		xi[i][2]=read();
		zd[xi[i][1]][xi[i][2]]=true;
	}
	loop(a) my(ma[i][1],ma[i][2]);
	loop(b) xy(xi[i][1],xi[i][2]);
	int tot=0;
	loop(n)
		doop(m)
			if(!qp[i][j])
				tot++;
	jz=read();
	zh(tot,jz);
	/*loop(n){
		doop(m){
			print(qp[i][j]);
			cout<<" ";
		}
		cout<<endl;
	}
	*/
	if(tot<a+b)
		cout<<"Oh my god!";
	else
		loop(cnt)
			print(cc[i]);
	return 0;
}
2021/5/19 14:47
加载中...