40分求调,4,5共有6个WA
查看原帖
40分求调,4,5共有6个WA
1220004
_moting_楼主2024/9/23 16:23
#include<bits/stdc++.h>
#define int long long
using namespace std; 

const int N=510;
const int M=2e5+10;

int n,m,q,k;
int g[N][N];
int c[M],a[M],b[M];
int pim[25];
int cha[M];

int read(){
	int x=0,f=1;
	char ch=getchar();
	while(ch<'0'||ch>'9'){
		if(ch=='-')f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9'){
		x=x*10+ch-'0';
		ch=getchar();
	}
	return x*f;
}

void print(int x){
	if(x<0){
		x=-x;
		putchar('-');
	}
	if(x>9){
		print(x/10);
	}
	putchar(x%10+'0');
}

signed main(){
	n=read();
	m=read();
	q=read();
	k=read();
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			char ch;
			cin>>ch;
			if(ch=='.')g[i][j]=1;
		}
	}
	for(int i=1;i<=q;i++){
		char ch;
		cin>>ch;
		if(ch=='U')c[i]=0;
		else if(ch=='D')c[i]=1;
		else if(ch=='L')c[i]=2;
		else if(ch=='R')c[i]=3;
		a[i]=read();
		b[i]=read();
	}
	int x=1,y=1;
	for(int i=1;i<=q;i++){
		int j=i%k;
		pim[j]^=cha[i];
		if(pim[j]==1){
			c[i]^=1;
		}
		if(c[i]==0){
			x=max(x-a[i],(int)1);
		}
		if(c[i]==1){
			x=min(x+a[i],n);
		}
		if(c[i]==2){
			y=max(y-a[i],(int)1);
		}
		if(c[i]==3){
			y=min(y+a[i],m);
		}
		if(g[x][y]==0){
			pim[j]^=1;
			cha[i+b[i]*k+k]^=1;
		}
	}
	cout<<x<<' '<<y;
	return 0;
}
2024/9/23 16:23
加载中...