#include #include #include #include #include using namespace std; const int MAXN=33; struct rec { int x,y,d; }ans[MAXN*2]; struct node { int h,m,dat,num; }a[MAXN*2]; int n,m,k; int map[MAXN][MAXN]; bool b[MAXN][MAXN]; bool cmp(node a,node b) { if (a.hMax.d) Max.x=i,Max.y=j,Max.d=map[i][j]; if (Max.x && Max.y) { ans[a[h].num]=Max; for (int i=Max.y;i<=Max.y+a[h].dat-1;++i) b[Max.x][i]=1; return 1; } return 0; } bool GM(int h) { rec Max; Max.x=Max.y=Max.d=0; for (int i=1;i<=n;++i) for (int j=1;j<=m;++j) if (!b[i][j] && Max.d