23207 - 五子棋

#include<bits/stdc++.h>
using namespace std;
int n,m,t;
int a[200][200];
int check(){
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(a[i][j]!=0){
				// 判断右横
				if(j+4<=m){
					if(a[i][j]==a[i][j+1]&&
					   a[i][j]==a[i][j+2]&&
				       a[i][j]==a[i][j+3]&&
				       a[i][j]==a[i][j+4]) return 1;
				}
				// 判断下竖
				if(i+4<=n){
					if(a[i][j]==a[i+1][j]&&
					   a[i][j]==a[i+2][j]&&
					   a[i][j]==a[i+3][j]&&
					   a[i][j]==a[i+4][j]) return 1;
				}
				// 判断右下斜
				if(j+4<=m&&i+4<=n){
					if(a[i][j]==a[i+1][j+1]&&
				       a[i][j]==a[i+2][j+2]&&
				       a[i][j]==a[i+3][j+3]&&
					   a[i][j]==a[i+4][j+4]) return 1;
				}
				// 判断左下斜
				if(j>=5&&i+4<=n){
					if(a[i][j]==a[i+1][j-1]&&
					   a[i][j]==a[i+2][j-2]&&
					   a[i][j]==a[i+3][j-3]&&
				       a[i][j]==a[i+4][j-4]) return 1;
				}
			}
			
		}
	}
	return 0;
}
int main(){
	cin>>n>>m>>t;
	while(t--){
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cin>>a[i][j];
			}
		}
		cout<<(check()?"Yes":"No")<<endl;
	}
	return 0;
}