Files
2023-08-03 09:22:52 +08:00

83 lines
1.3 KiB
C++

#include<cstdio>
#include<algorithm>
#include<vector>
#include<cstdlib>
using namespace std;
struct node1
{
int x1,y1,x2,y2;
};
struct node2
{
int x,y,id;
};
int n;
node1 ps[27];
node2 po[27];
vector<int> e[27];
bool hsh[27],found;
int res[27],ans[27];
void dfs(int pos)
{
if(pos>n)
{
if(found)
{
printf("None\n");
exit(0);
}
found=1;
for(int i=1;i<=n;i++) ans[i]=res[i];
return;
}
for(int i=e[pos].size()-1;i>=0;i--)
if(!hsh[e[pos][i]])
{
hsh[e[pos][i]]=1;
res[pos]=e[pos][i];
dfs(pos+1);
hsh[e[pos][i]]=0;
}
}
int main()
{
freopen("slides.in","r",stdin);
freopen("slides.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d%d%d%d",&ps[i].x1,&ps[i].x2,&ps[i].y1,&ps[i].y2);
for(int i=1;i<=n;i++)//po[i].id=i
{
scanf("%d%d",&po[i].x,&po[i].y);
po[i].id=i;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
if(ps[i].x1<=po[j].x&&po[j].x<=ps[i].x2
&&ps[i].y1<=po[j].y&&po[j].y<=ps[i].y2)
e[i].push_back(j);
}
dfs(1);
if(found) for(int i=1;i<=n;i++) printf("%c %d\n",i+'A'-1,ans[i]);
else printf("None\n");
// for(int i=1;i<=n;i++)
// {
// printf("%c:",i+'A'-1);
// for(int j=0;j<e[i].size();j++) printf(" %d",e[i][j]);
// printf("\n");
// }
return 0;
}
/*
4
6 22 10 20
4 18 6 16
8 20 2 18
10 24 4 8
9 15
19 17
11 7
21 11
*/