Advertisement
OIQ

rayon3

OIQ
Nov 22nd, 2019
169
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.53 KB | None
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. vector <vector<char>> a(1001, vector<char>(1001, '.'));
  7. int c = 0;
  8. int i = 500, j = 500;
  9.  
  10. bool fillmas(int d, int w, int n) {
  11.     while (d > 0) {
  12.         if (w == 0) {
  13.             j++;
  14.             a[i][j] = '*';
  15.             c++;
  16.         }
  17.         else if (w == 1) {
  18.             i--;
  19.             a[i][j] = '*';
  20.             c++;
  21.         }
  22.         else if (w == 2) {
  23.             j--;
  24.             a[i][j] = '*';
  25.             c++;
  26.         }
  27.         else {
  28.             i++;
  29.             a[i][j] = '*';
  30.             c++;
  31.        
  32.         }
  33.  
  34.         if (c == n)
  35.             return false;
  36.         d--;
  37.  
  38.     }
  39.  
  40.     return true;
  41.  
  42.  
  43. }
  44.  
  45. int main() {
  46.  
  47.     int n, d, k;
  48.  
  49.     cin >> n >> d >> k;
  50.  
  51.     a[500][500] = '*';
  52.  
  53.     int round = 0;
  54.  
  55.     while (fillmas(d, round % 4, n)) {
  56.         round++;
  57.  
  58.         if (!fillmas(d, round % 4, n))
  59.             break;
  60.         d *= k;
  61.         round++;
  62.     }
  63.    
  64.     int l = -1, r = -1, t = -1, b = -1;;
  65.  
  66.     for (int j = 0; j < 1001; j++) {
  67.         for (int i = 0; i < 1001; i++)
  68.             if (a[i][j] == '*') {
  69.                 l = j;
  70.                 break;
  71.             }
  72.         if (l != -1)
  73.             break;
  74.     }
  75.  
  76.     for (int i = 1000; i > -1; i--) {
  77.         for (int j = 0; j < 1001; j++)
  78.             if (a[i][j] == '*') {
  79.                 b = i ;
  80.                 break;
  81.             }
  82.         if (b != -1)
  83.             break;
  84.     }
  85.  
  86.     for (int i = 0; i < 1001; i++) {
  87.         for (int j = 0; j < 1001; j++)
  88.             if (a[i][j] == '*') {
  89.                 t = i;
  90.                 break;
  91.             }
  92.         if (t != -1)
  93.             break;
  94.     }
  95.  
  96.     for (int j = 1000; j > -1; j--) {
  97.         for (int i = 1000; i > -1; i--)
  98.             if (a[i][j] == '*') {
  99.                 r = j;
  100.                 break;
  101.             }
  102.         if (r != -1)
  103.             break;
  104.     }
  105.  
  106.     for (int i = t; i < b + 1; i++) {
  107.         for (int j = l; j < r + 1; j++)
  108.             cout << a[i][j];
  109.         cout << endl;
  110.     }
  111.  
  112.     return 0;
  113. }
Advertisement
RAW Paste Data Copied
Advertisement