总结
构造一个最大路线数量,然后模拟,注意宽跟列为1的情况
void f1(int n,int m,int k)
{
vector<pair<int,char> >vec;
for(int i=0; i<m-1&&k; i++)
{
if(k)
vec.pb( {1,'R'} ),k--;
if(k&&n-1)
vec.pb( {min(k,n-1),'D'} ),k-=min(k,n-1);
if(k&&n-1)
vec.pb( {min(k,n-1),'U'} ),k-=min(k,n-1);
}
if(k&&m-1)
vec.pb( {min(k,m-1),'L'} ),k-=min(k,m-1);
for(int i=1; i<n&&k; i++)
{
if(k)
vec.pb( {1,'D'} ),k--;
if(k&&m-1)
vec.pb( {min(k,m-1), 'R'} ),k-=min(k,m-1);
if(k&&m-1)
vec.pb( {min(k,m-1), 'L'} ),k-=min(k,m-1);
}
if(k)
vec.pb( {k,'U'} );
cout<<"YES"<<endl;
cout<<vec.size()<<endl;
for(int i=0; i<vec.size(); i++)
{
cout<<vec[i].F<<" "<<vec[i].S<<endl;
}
}
signed main()
{
IOS;
//file();
int n,m,k;
cin>>n>>m>>k;
if(4*n*m-2*n-2*m<k)
cout<<"NO"<<endl;
else
f1(n,m,k);
return 0;
}