rt,A了47个
#include<bits/stdc++.h>
using namespace std;
int k,n,m,a[15],b[15],od[15];
bool rot[15];
bool vis[15][15];
void solve()
{
int id=1;
memset(vis,0,sizeof(vis));
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
if(vis[i][j]) continue;
if(id>k) return ;
int nh=a[od[id]],nw=b[od[id]];
if(rot[od[id]]) swap(nh,nw);
if(i+nh-1>n||j+nw-1>m) return ;
for(int i2=i; i2<i+nh; i2++)
{
for(int j2=j; j2<j+nh; j2++)
{
if(vis[i2][j2]) return ;
vis[i2][j2]=1;
}
}
id++;
// cout<<i<<' '<<j<<endl;
}
}
for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) if(!vis[i]) return ;
// for(int i=1; i<=k; i++) cout<<od[i]<<' ';
// cout<<endl;
// for(int i=1; i<=k; i++) cout<<rot[i]<<' ';
// cout<<endl;
// cout<<id<<endl;
cout<<"Yes";
exit(0);
}
void dfs(int now)
{
if(now==k+1) return solve();
rot[now]=1;
dfs(now+1);
rot[now]=0;
dfs(now+1);
}
signed main()
{
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
cin>>k>>n>>m;
for(int i=1; i<=k; i++) cin>>a[i]>>b[i],od[i]=i;
do
{
dfs(1);
}
while(next_permutation(od+1,od+k+1));
cout<<"No";
return 0;
}
*/