Advertisement
KgCro

Savrseni Nastup

May 29th, 2020
531
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.16 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5.  
  6. #ifndef DEBUG
  7. #define DEBUG(...)printf(__VA_ARGS__)
  8. #endif
  9.  
  10. char di[5] = "DLUR";
  11. int dr[4] = {1,  0, -1,  0};
  12. int ds[4] = {0, -1,  0,  1};
  13.  
  14. int min(int a, int b) {
  15.   return a < b ? a : b;
  16. }
  17.  
  18. int max(int a, int b) {
  19.   return a > b ? a : b;
  20. }
  21.  
  22. void pomakni(int pos[2], char c) {
  23.   for (int i = 0; i < 4; ++i) {
  24.     if (c==di[i]) {
  25.       pos[0] += dr[i];
  26.       pos[1] += ds[i];
  27.       break;
  28.     }
  29.   }
  30. }
  31.  
  32. void ucrtaj(char **m, char c, int pos[2]) {
  33.   char z = c;
  34.   if (m[pos[0]][pos[1]]=='X') {
  35.     return;
  36.   }
  37.   if ((m[pos[0]][pos[1]]=='G' && c=='F') ||
  38.       (m[pos[0]][pos[1]]=='F' && c=='G')) {
  39.     z = 'X';
  40.   }
  41.   m[pos[0]][pos[1]] = z;
  42. }
  43.  
  44. int main() {
  45.   int rg, sg, n;
  46.   scanf("%d%d%d", &rg, &sg, &n);
  47.   char *F, *G;
  48.   F = malloc(n * sizeof(char));
  49.   G = malloc(n * sizeof(char));
  50.   for (int i = 0; i < n; ++i) {
  51.     scanf(" %c", F+i);
  52.   }
  53.   for (int i = 0; i < n; ++i) {
  54.     scanf(" %c", G+i);
  55.   }
  56.   int fp[2] = {0, 0};
  57.   int gp[2] = {rg, sg};
  58.   int mnr = min(fp[0], gp[0]);
  59.   int mxr = max(fp[0], gp[0]);
  60.   int mns = min(fp[1], gp[1]);
  61.   int mxs = max(fp[1], gp[1]);
  62.  
  63.   for (int i = 0; i < n; ++i) {
  64.     pomakni(fp, F[i]);
  65.     pomakni(gp, G[i]);
  66.     mnr = min(mnr, min(fp[0], gp[0]));
  67.     mns = min(mns, min(fp[1], gp[1]));
  68.     mxr = max(mxr, max(fp[0], gp[0]));
  69.     mxs = max(mxs, max(fp[1], gp[1]));
  70.   }
  71.   // printf("mnr = %d\n", mnr);
  72.   // printf("mns = %d\n", mns);
  73.   // printf("mxr = %d\n", mxr);
  74.   // printf("mxs = %d\n", mxs);
  75.  
  76.   int R = mxr-mnr+1;
  77.   int S = mxs-mns+1;
  78.   char **m;
  79.   m = malloc(R * sizeof(char *));
  80.   for (int i = 0; i < R; ++i) {
  81.     m[i] = malloc(S * sizeof(char));
  82.     memset(m[i], '.', S * sizeof(char));
  83.   }
  84.  
  85.   fp[0] = -mnr;
  86.   fp[1] = -mns;
  87.   gp[0] = rg-mnr;
  88.   gp[1] = sg-mns;
  89.  
  90.   ucrtaj(m, 'F', fp);
  91.   ucrtaj(m, 'G', gp);
  92.   for (int i = 0; i < n; ++i) {
  93.     pomakni(fp, F[i]);
  94.     pomakni(gp, G[i]);
  95.     ucrtaj(m, 'F', fp);
  96.     ucrtaj(m, 'G', gp);
  97.   }
  98.  
  99.   printf("%d %d\n", R, S);
  100.   for (int i = 0; i < R; ++i) {
  101.     for (int j = 0; j < S; ++j) {
  102.       printf("%c", m[i][j]);
  103.     }
  104.     printf("\n");
  105.   }
  106.   return 0;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement