Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define int long long
- #define vi vector<int>
- #define ii pair<int,int>
- #define fi first
- #define sc second
- #define stoi stoll
- #define popcnt __builtin_popcount
- #define getbit(x, k) ((x >> k) & 1)
- #define all(x) (x).begin(),(x).end()
- #define FOR(i,j,k) for(int i=j; i<k; i++)
- #define look(a) cerr <<#a<<": "<<a<<endl;
- #define look2(a,b) cerr <<#a<<": "<<a<<" | "<<#b<<": "<<b<< endl;
- const int N = 205;
- char a[N][N],b[N][N];
- void cuta(int x1mn, int y1mn, int x, int y){
- char c[N][N];
- FOR(i,y1mn,y1mn+y)
- FOR(j,x1mn,x1mn+x)
- c[i-y1mn][j-x1mn] = a[i][j];
- FOR(i,0,y)
- FOR(j,0,x)
- a[i][j] = c[i][j];
- }
- void cutb(int x1mn, int y1mn, int x, int y){
- char c[N][N];
- FOR(i,y1mn,y1mn+y)
- FOR(j,x1mn,x1mn+x)
- c[i-y1mn][j-x1mn] = b[i][j];
- FOR(i,0,y)
- FOR(j,0,x)
- b[i][j] = c[i][j];
- }
- void flip(int x, int y)
- {
- char c[N][N];
- FOR(i,0,y)
- FOR(j,0,x)
- c[i][j] = b[j][i];
- FOR(i,0,y)
- FOR(j,0,x)
- b[i][j] = c[i][j];
- }
- bool scan1(int x, int y){
- FOR(i,0,y)
- FOR(j,0,x)
- if (a[i][j] != b[i][j]) return false;
- return true;
- }
- bool scan2(int x, int y){
- FOR(i,0,y)
- FOR(j,0,x)
- if (a[i][j] != b[y-i-1][x-j-1]) return false;
- return true;
- }
- void solve()
- {
- int n;
- cin >> n;
- int x1mn = 205,y1mn = 205,x1mx = 0,y1mx = 0;
- int x2mn = 205,y2mn = 205,x2mx = 0,y2mx = 0;
- FOR(i,0,n)
- FOR(j,0,n){
- cin >> a[i][j];
- if (a[i][j] == '#'){
- x1mn = min(x1mn,j);
- y1mn = min(y1mn,i);
- x1mx = max(x1mx,j);
- y1mx = max(y1mx,i);
- }
- }
- FOR(i,0,n)
- FOR(j,0,n){
- cin >> b[i][j];
- if (b[i][j] == '#'){
- x2mn = min(x2mn,j);
- y2mn = min(y2mn,i);
- x2mx = max(x2mx,j);
- y2mx = max(y2mx,i);
- }
- }
- if ((x1mx - x1mn == x2mx - x2mn && y1mx - y1mn == y2mx - y2mn) ||
- (x1mx - x1mn == y2mx - y2mn && y1mx - y1mn == x2mx - x2mn)){
- int x = x1mx - x1mn + 1;
- int y = y1mx - y1mn + 1;
- cuta(x1mn,y1mn,x,y);
- cutb(x2mn,y2mn,x,y);
- bool test1 = scan1(x,y) || scan2(x,y);
- flip(x,y);
- bool test2 = scan1(x,y) || scan2(x,y);
- if (test1 || test2) cout << "Yes";
- else cout << "No";
- cout << '\n';
- FOR(i,0,y){
- FOR(j,0,x)
- cout << a[i][j];
- cout << '\n';
- }
- cout << '\n';
- FOR(i,0,y){
- FOR(j,0,x)
- cout << b[i][j];
- cout << '\n';
- }
- return;
- }
- cout << "No";
- }
- signed main()
- {
- cin.tie(0)->sync_with_stdio(0);
- freopen("in", "r", stdin);
- freopen("out", "w", stdout);
- int T = 1;
- // cin >> T;
- while (T--) {
- solve();
- cout << '\n';
- }
- cerr << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
- }
Advertisement
Add Comment
Please, Sign In to add comment