Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #ifndef DEBUG
- #define DEBUG(...)printf(__VA_ARGS__)
- #endif
- char di[5] = "DLUR";
- int dr[4] = {1, 0, -1, 0};
- int ds[4] = {0, -1, 0, 1};
- int min(int a, int b) {
- return a < b ? a : b;
- }
- int max(int a, int b) {
- return a > b ? a : b;
- }
- void pomakni(int pos[2], char c) {
- for (int i = 0; i < 4; ++i) {
- if (c==di[i]) {
- pos[0] += dr[i];
- pos[1] += ds[i];
- break;
- }
- }
- }
- void ucrtaj(char **m, char c, int pos[2]) {
- char z = c;
- if (m[pos[0]][pos[1]]=='X') {
- return;
- }
- if ((m[pos[0]][pos[1]]=='G' && c=='F') ||
- (m[pos[0]][pos[1]]=='F' && c=='G')) {
- z = 'X';
- }
- m[pos[0]][pos[1]] = z;
- }
- int main() {
- int rg, sg, n;
- scanf("%d%d%d", &rg, &sg, &n);
- char *F, *G;
- F = malloc(n * sizeof(char));
- G = malloc(n * sizeof(char));
- for (int i = 0; i < n; ++i) {
- scanf(" %c", F+i);
- }
- for (int i = 0; i < n; ++i) {
- scanf(" %c", G+i);
- }
- int fp[2] = {0, 0};
- int gp[2] = {rg, sg};
- int mnr = min(fp[0], gp[0]);
- int mxr = max(fp[0], gp[0]);
- int mns = min(fp[1], gp[1]);
- int mxs = max(fp[1], gp[1]);
- for (int i = 0; i < n; ++i) {
- pomakni(fp, F[i]);
- pomakni(gp, G[i]);
- mnr = min(mnr, min(fp[0], gp[0]));
- mns = min(mns, min(fp[1], gp[1]));
- mxr = max(mxr, max(fp[0], gp[0]));
- mxs = max(mxs, max(fp[1], gp[1]));
- }
- // printf("mnr = %d\n", mnr);
- // printf("mns = %d\n", mns);
- // printf("mxr = %d\n", mxr);
- // printf("mxs = %d\n", mxs);
- int R = mxr-mnr+1;
- int S = mxs-mns+1;
- char **m;
- m = malloc(R * sizeof(char *));
- for (int i = 0; i < R; ++i) {
- m[i] = malloc(S * sizeof(char));
- memset(m[i], '.', S * sizeof(char));
- }
- fp[0] = -mnr;
- fp[1] = -mns;
- gp[0] = rg-mnr;
- gp[1] = sg-mns;
- ucrtaj(m, 'F', fp);
- ucrtaj(m, 'G', gp);
- for (int i = 0; i < n; ++i) {
- pomakni(fp, F[i]);
- pomakni(gp, G[i]);
- ucrtaj(m, 'F', fp);
- ucrtaj(m, 'G', gp);
- }
- printf("%d %d\n", R, S);
- for (int i = 0; i < R; ++i) {
- for (int j = 0; j < S; ++j) {
- printf("%c", m[i][j]);
- }
- printf("\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement