Language: C++

#include<stdio.h>
#include<windows.h>
int main(void)
{
	int w,h;
	int map[101][101];
	int st[2],go[2];
	int i,j,k,l,m;
	int num;
	int b_c,b_ang,b_x,b_y;
	int sign;
	int ans;
	int maps=0;
	
	for(;;)
	{
		ans=0;
		
		for(i=0;i<100;i++)
		{
			for(j=0;j<100;j++)
				map[i][j]=0;
		}
		
		scanf("%d%d",&w,&h);
		
		if(w==0 && h==0)
			break;
		
		scanf("%d%d%d%d",&st[0],&st[1],&go[0],&go[1]);
		
		
		scanf("%d",&num);
		
		for(i=0;i<num;i++)
		{
			scanf("%d%d%d%d",&b_c,&b_ang,&b_x,&b_y);
			
			if(b_ang==0)
			{
				for(j=0;j<4;j++)
				{
					for(k=0;k<2;k++)
						map[b_x+j][b_y+k]=b_c;
				}
			}
			else
			{
				for(j=0;j<4;j++)
				{
					for(k=0;k<2;k++)
						map[b_x+k][b_y+j]=b_c;
				}
			}
		}
		
		if(map[st[0]][st[1]]==0 || map[go[0]][go[1]]==0)
			printf("NG");
		else
		{
			sign=map[st[0]][st[1]];
			
			for(i=0;i<w;i++)
			{
				for(j=0;j<h;j++)
				{
					if(map[i][j]!=sign)
						map[i][j]=0;
					else
						maps++;
				}
			}
			
			map[st[0]][st[1]]=-1;
			map[go[0]][go[1]]=-2;
			
			for(i=st[0],j=st[1];;)
			{
				
/*
				for(m=0;m<h;m++)
				{
					for(l=0;l<w;l++)
					{
						printf("%d ",map[l][m]);
					}
					printf("%dツ行\n",l);
				}
				getchar();
				system("cls");
*/
				
				if(map[i+1][j]==-2 || map[i][j+1]==-2 || map[i-1][j]==-2 || map[i][j-1]==-2)
				{
					ans=1;
					break;
				}
				else if(map[i-1][j]!=0 && map[i][j-1]!=0 && map[i+1][j]!=0 && map[i][j+1]!=0)
				{
					if(map[i+1][j]==sign)
					{
						map[i][j]=7;
						i++;
						maps--;
					}
					else if(map[i][j+1]==sign)
					{
						map[i][j]=7;
						j++;
						maps--;
					}
					else if(map[i-1][j]==sign)
					{
						map[i][j]=7;
						i--;
						maps--;
					}
					else if(map[i][j-1]==sign)
					{
						map[i][j]=7;
						j--;
						maps--;
					}
				}
				else if(map[i+1][j]==sign/* && map[i][j-1]!=sign*/)//ツ右
				{
//					printf("migi\n");
					map[i][j]=7;
					i++;
					maps--;
				}
				else if(/*map[i+1][j]!=sign && */map[i][j+1]==sign)//ツ可コ
				{
//					printf("sita1\n");
					map[i][j]=7;
					j++;
					maps--;
				}
				else if(map[i-1][j]==sign/* && map[i][j+1]!=sign*/)//ツ債カ
				{
//					printf("hidari\n");
					map[i][j]=7;
					i--;
					maps--;
				}
				else if(/*map[i+1][j]!=sign && */map[i][j-1]==sign)//ツ湘」
				{
//					printf("ue1\n");
					map[i][j]=7;
					j--;
					maps--;
				}
				else if(/*map[i-1][j]!=sign && */map[i][j+1]==sign)//ツ可コ
				{
//					printf("sita2\n");
					map[i][j]=7;
					j++;
					maps--;
				}
				else if(map[i-1][j]!=sign && map[i][j-1]==sign)//ツ湘」
				{
//					printf("ue2\n");
					map[i][j]=7;
					maps--;
					j--;
				}
				else if(map[i+1][j]!=sign && map[i][j+1]!=sign && map[i-1][j]!=sign && map[i][j-1]!=sign && maps==0)
				{
					ans=2;
					break;
				}
				else
				{
					
					map[i][j]=7;
					
					for(m=0;m<h;m++)
					{
						for(l=0;l<w;l++)
						{
							if((map[m][l]==sign && map[m][l+1]==7) || (map[m][l]==sign && map[m-1][l]))
							{
								i=m;
								j=l;
							}
						}
					}
				}
			}
			if(ans==1)
				printf("OK");
			else if(ans==2)
				printf("NG");
		}
	}
}
/*
20 20 
1 1
2 7
7
2 0 1 1
5 1 1 3
2 1 3 3
1 1 5 2
5 1 7 3
2 0 2 7
2 0 6 8
*/

Compiler output:
a.cc:2:9: fatal error: windows.h: No such file or directory
    2 | #include<windows.h>
      |         ^~~~~~~~~~~
compilation terminated.