RC-u2 女王的大敕令
#include<bits/stdc++.h>
#define PII pair<int,int>
#define x first
#define y second
using namespace std;
int getidx(int x , int y) {
return (x - 1) * 5 + y;
}
struct Node {
int x1 , y1 , x2 , y2;
};
bool cmp(Node A , Node B) {
if(A.x1 == B.x1 && A.y1 == B.y1) {
if(A.x2 == B.x2) return A.y2 < B.y2;
return A.x2 < B.x2;
}
else {
if(A.x1 == B.x1) return A.y1 < B.y1;
return A.x1 < B.x1;
}
}
signed main() {
int bei , nan , xi , dong;
map<int,bool> p1 , p2;
cin >> bei >> nan >> xi >> dong;
int v1 , v2 , v3 , v4;
cin >> v1 >> v2 >> v3 >> v4;
xi -= v3;
dong += v4;
for(int i = 1; i <= 5; i ++) {
int m = getidx(xi , i);
p2[m] = 1;
m = getidx(dong , i);
p2[m] = 1;
m = getidx(i , bei);
p2[m] = 1;
m = getidx(i , nan);
p2[m] = 1;
}
bei += v1;
nan -= v2;
for(int i = 1; i <= 5; i ++) {
int m = getidx(i , bei);
p1[m] = 1;
m = getidx(i , nan);
p1[m] = 1;
m = getidx(xi , i);
p1[m] = 1;
m = getidx(dong , i);
p1[m] = 1;
}
int st , ed , d1 , d2;
cin >> st >> ed >> d1 >> d2;
vector<PII> ans1;
for(int i = 1; i <= 5; i ++) {
for(int j = 1; j <= 5; j ++) {
int now = abs(i - st) + abs(j - ed);
if(now == d2) {
int t = getidx(i , j);
if(p1[t] == 0)
ans1.push_back({i , j});
}
}
}
vector<Node> res;
for(auto [i , j] : ans1) {
int x = i , y = j;
for(int r1 = 1; r1 <= 5; r1 ++) {
for(int r2 = 1; r2 <= 5; r2 ++) {
int now = abs(r1 - x) + abs(r2 - y);
if(now == d1) {
int t = getidx(r1 , r2);
if(p2[t] == 0)
res.push_back({r1 , r2 , x , y});
}
}
}
}
sort(res.begin() , res.end() , cmp);
for(auto t : res) {
cout << t.x1 << ' ' << t.y1 << ' ' << t.x2 << ' ' << t.y2 << endl;
}
}