为何数组开大点就会少几个点WA,还有为何最后一个点RE
查看原帖
为何数组开大点就会少几个点WA,还有为何最后一个点RE
1237323
zhutongxuan楼主2025/1/26 15:19

这里数组范围改成h+1,w+1或h+4,w+4都会WA,而且最后一个点想不明白为何RE

#include<bits/stdc++.h>
#define int long long
#define INF 100000000
#define double long double
using namespace std;
int h,w,q,r,c,ans;
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	cin>>h>>w>>q;
	int t[h+5][w+5],f[h+5][w+5];
	for(int i=1;i<=h;i++) for(int j=1;j<=w;j++) t[i][j]=0,f[i][j]=0;
	while(q--){
		cin>>r>>c;
		if(!f[r][c]) f[r][c]=1;
		else{
			for(int i=r-t[r][c];i;i--){
				if(!f[i][c]){
					f[i][c]=1;
					break;
				}
			}
			for(int i=r+t[r][c];i<=h;i++){
				if(!f[i][c]){
					f[i][c]=1;
					break;
				}
			}
			for(int i=c-t[r][c];i;i--){
				if(!f[r][i]){
					f[r][i]=1;
					break;
				}
			}
			for(int i=c+t[r][c];i<=w;i++){
				if(!f[r][i]){
					f[r][i]=1;
					break;
				}
			}
		}
		t[r][c]++;
	}
	for(int i=1;i<=h;i++) for(int j=1;j<=w;j++) if(f[i][j]) ans++;
	cout<<h*w-ans<<endl;
	return 0;
}
2025/1/26 15:19
加载中...