Language: C++

#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <math.h>
#include <string.h>
#include <string>
using namespace std;
typedef long long ll;
const int maxn = 1000+5;
char map[maxn][maxn];
int N,M,A,B;
int main()
{
       memset(map,'.',sizeof(map));
	scanf("%d%d%d%d",&N,&M,&A,&B);
	int tempA=A,tempB=B;


	//第一遍
	if( !(A==0&&B==0))
	{
		memset(map,'.',sizeof(map));
		  if (N%2==1)
		{
			if (M>=2)
			{
				for(int i=1;i+1<=M;i+=2)
				{
					if (A==0) break;
					map[1][i]='<';
					map[1][i+1]='>';
					A--;
				}
			}
		}
		if (M%2==1)
		{
			if (N>=2)
			{
				for (int i=1;i<N;i+=2)
				{
					if (B==0) break;
					map[i][M]='^';
					map[i+1][M]='v';
					B--;
				}
			}
		}
		for(int j=1;j<M;j++)
		{
			if (A==0)break;
			for(int i=1;i<=N;i++)
			{
				if (A==0)break;
				if (map[i][j]=='.' && map[i][j+1]=='.')
				{
					map[i][j]='<';
					map[i][j+1]='>';
					A--;
				}
			}
		}
		for(int i=1;i<N;i++)
		{
			if (B==0)break;
			for(int j=1;j<=M;j++)
			{
				if (B==0) break;
				if (map[i][j]=='.' && map[i+1][j]=='.')
				{
					map[i][j]='^' ;
					map[i+1][j]='v';
					B--;
				}
			}
		}
	}


	 //第二遍
	if (!(A==0&&B==0))
	{
		memset(map,'.',sizeof(map));
		A=tempA,B=tempB;
		  if (N%2==1)
		{
			if (M>=2)
			{
				for(int i=1;i+1<=M;i+=2)
				{
					if (A==0) break;
					map[1][i]='<';
					map[1][i+1]='>';
					A--;
				}
			}
		}

		if (M%2==1)
		{
			if (N>=2)
			{
				for (int i=1;i<N;i+=2)
				{
					if (B==0) break;
					map[i][M]='^';
					map[i+1][M]='v';
					B--;
				}
			}
		}
		for(int i=1;i<N;i++)
		{
			if (B==0)break;
			for(int j=1;j<=M;j++)
			{
				if (B==0) break;
				if (map[i][j]=='.' && map[i+1][j]=='.')
				{
					map[i][j]='^' ;
					map[i+1][j]='v';
					B--;
				}
			}
		}

		for(int j=1;j<M;j++)
		{
			if (A==0)break;
			for(int i=1;i<=N;i++)
			{
				if (A==0)break;
				if (map[i][j]=='.' && map[i][j+1]=='.')
				{
					map[i][j]='<';
					map[i][j+1]='>';
					A--;
				}
			}
		}
	}

	 //第三遍
	if (!(A==0&&B==0))
	{
		memset(map,'.',sizeof(map));
		A=tempA,B=tempB;
		if (N>=3&&M>=3)
		{
			if (A!=0)
			{
				map[N-2][1]='<';
				map[N-2][2]='>';
				A--;
			}
                  if (B!=0)
			{
				map[N-2][3]='^';
				map[N-1][3]='v';
				B--;
			}
			if (B!=0)
			{
				map[N-1][1]='^';
				map[N][1]='v';
				B--;
			}
			if (A!=0)
			{
				map[N][2]='<';
				map[N][3]='>';
				A--;
			}
		}

		for(int i=1;i<=N;i++)
		{
			if (A==0)break;
			for(int j=1;j<M;j++)
			{
				if (A==0)break;
				if (map[i][j]=='.' && map[i][j+1]=='.')
				{
					map[i][j]='<';
					map[i][j+1]='>';
					A--;
				}
			}
		}

		for(int i=1;i<N;i++)
		{
			if (B==0)break;
			for(int j=1;j<=M;j++)
			{
				if (B==0) break;
				if (map[i][j]=='.' && map[i+1][j]=='.')
				{
					map[i][j]='^' ;
					map[i+1][j]='v';
					B--;
				}
			}
		}
	}
/*
	//第四遍
	if (!(A==0&&B==0))
	{
		memset(map,'.',sizeof(map));
		A=tempA,B=tempB;
		if (N>=3&&M>=3)
		{
			if (A!=0)
			{
				map[N-2][1]='<';
				map[N-2][2]='>';
				A--;
			}
                  if (B!=0)
			{
				map[N-2][3]='^';
				map[N-1][3]='v';
				B--;
			}
			if (B!=0)
			{
				map[N-1][1]='^';
				map[N][1]='v';
				B--;
			}
			if (A!=0)
			{
				map[N][2]='<';
				map[N][3]='>';
				A--;
			}
		}
		for(int i=1;i<N;i++)
		{
			if (B==0)break;
			for(int j=1;j<=M;j++)
			{
				if (B==0) break;
				if (map[i][j]=='.' && map[i+1][j]=='.')
				{
					map[i][j]='^' ;
					map[i+1][j]='v';
					B--;
				}
			}
		}

		for(int i=1;i<=N;i++)
		{
			if (A==0)break;
			for(int j=1;j<M;j++)
			{
				if (A==0)break;
				if (map[i][j]=='.' && map[i][j+1]=='.')
				{
					map[i][j]='<';
					map[i][j+1]='>';
					A--;
				}
			}
		}


	}


	//第五遍
	if (!(A==0&&B==0))
	{
		memset(map,'.',sizeof(map));
		A=tempA,B=tempB;
		if (N>=3&&M>=3)
		{
			if (A!=0)
			{
				map[N-2][M-2]='<';
				map[N-2][M-1]='>';
				A--;
			}
                  if (B!=0)
			{
				map[N-2][M]='^';
				map[N-1][M]='v';
				B--;
			}
			if (B!=0)
			{
				map[N-1][M-2]='^';
				map[N][M-2]='v';
				B--;
			}
			if (A!=0)
			{
				map[N][M-1]='<';
				map[N][M]='>';
				A--;
			}
		}

		for(int i=1;i<N;i++)
		{
			if (B==0)break;

			for(int j=1;j<=M;j++)
			{
				if (B==0) break;
				if (map[i][j]=='.' && map[i+1][j]=='.')
				{
					map[i][j]='^' ;
					map[i+1][j]='v';
					B--;
				}
			}
		}

		for(int i=1;i<=N;i++)
		{
			if (A==0)break;


			for(int j=1;j<M;j++)
			{
				if (A==0)break;
				if (map[i][j]=='.' && map[i][j+1]=='.')
				{
					map[i][j]='<';
					map[i][j+1]='>';
					A--;
				}
			}
		}

	}


	//第六遍
	if (!(A==0&&B==0))
	{
		memset(map,'.',sizeof(map));
		A=tempA,B=tempB;
		if (N>=3&&M>=3)
		{
			if (A!=0)
			{
				map[N-2][1]='<';
				map[N-2][2]='>';
				A--;
			}
                  if (B!=0)
			{
				map[N-2][3]='^';
				map[N-1][3]='v';
				B--;
			}
			if (B!=0)
			{
				map[N-1][1]='^';
				map[N][1]='v';
				B--;
			}
			if (A!=0)
			{
				map[N][2]='<';
				map[N][3]='>';
				A--;
			}
		}

		for(int j=1;j<M;j++)
		{
			if (A==0)break;

			for(int i=1;i<=N;i++)
			{
				if (A==0)break;
				if (map[i][j]=='.' && map[i][j+1]=='.')
				{
					map[i][j]='<';
					map[i][j+1]='>';
					A--;
				}
			}
		}


		for(int j=1;j<=M;j++)
		{
			if (B==0)break;
			for(int i=1;i<N;i++)
			{
				if (B==0) break;
				if (map[i][j]=='.' && map[i+1][j]=='.')
				{
					map[i][j]='^' ;
					map[i+1][j]='v';
					B--;
				}
			}
		}


	}



	//第七遍
	if (!(A==0&&B==0))
	{
		memset(map,'.',sizeof(map));
		A=tempA,B=tempB;
		if (N>=3&&M>=3)
		{
			if (A!=0)
			{
				map[N-2][1]='<';
				map[N-2][2]='>';
				A--;
			}
                  if (B!=0)
			{
				map[N-2][3]='^';
				map[N-1][3]='v';
				B--;
			}
			if (B!=0)
			{
				map[N-1][1]='^';
				map[N][1]='v';
				B--;
			}
			if (A!=0)
			{
				map[N][2]='<';
				map[N][3]='>';
				A--;
			}
		}

		for(int i=1;i<N;i++)
		{
			if (B==0)break;
			for(int j=1;j<=M;j++)
			{
				if (B==0) break;
				if (map[i][j]=='.' && map[i+1][j]=='.')
				{
					map[i][j]='^' ;
					map[i+1][j]='v';
					B--;
				}
			}
		}

		for(int j=1;j<M;j++)
		{
			if (A==0)break;
			for(int i=1;i<=N;i++)
			{
				if (A==0)break;
				if (map[i][j]=='.' && map[i][j+1]=='.')
				{
					map[i][j]='<';
					map[i][j+1]='>';
					A--;
				}
			}
		}


	}

	//第八遍
	if (!(A==0&&B==0))
	{*/
		memset(map,'.',sizeof(map));
		A=tempA,B=tempB;
		if (N>=3&&M>=3)
		{
			if (A!=0)
			{
				map[N-2][1]='<';
				map[N-2][2]='>';
				A--;
			}
                  if (B!=0)
			{
				map[N-2][3]='^';
				map[N-1][3]='v';
				B--;
			}
			if (B!=0)
			{
				map[N-1][1]='^';
				map[N][1]='v';
				B--;
			}
			if (A!=0)
			{
				map[N][2]='<';
				map[N][3]='>';
				A--;
			}
		}

			for(int j=1;j<M;j++)
		{
			if (A==0)break;
			for(int i=1;i<=N;i++)
			{
				if (A==0)break;
				if (map[i][j]=='.' && map[i][j+1]=='.')
				{
					map[i][j]='<';
					map[i][j+1]='>';
					A--;
				}
			}
		}




		for(int i=1;i<N;i++)
		{
			if (B==0)break;
			for(int j=1;j<=M;j++)
			{
				if (B==0) break;
				if (map[i][j]=='.' && map[i+1][j]=='.')
				{
					map[i][j]='^' ;
					map[i+1][j]='v';
					B--;
				}
			}
		}



	}



	//---------------答案输出-------------------
	if (A==0&&B==0)
	{
		printf("YES\n");
		for(int i=1;i<=N;i++)  {   for(int j=1;j<=M;j++)printf("%c",map[i][j]);  printf("\n"); }
	}else printf("NO\n");

	return 0;
}


Compiler output:
a.cc:551:9: error: expected unqualified-id before 'if'
  551 |         if (A==0&&B==0)
      |         ^~
a.cc:555:10: error: expected unqualified-id before 'else'
  555 |         }else printf("NO\n");
      |          ^~~~
a.cc:557:9: error: expected unqualified-id before 'return'
  557 |         return 0;
      |         ^~~~~~
a.cc:558:1: error: expected declaration before '}' token
  558 | }
      | ^