Quipex

temp3

Apr 3rd, 2017
363
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.47 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <cstring>
  4. #include <string>
  5. #include <cstdio>
  6. #include <cstdlib>
  7. #include <algorithm>
  8. #include <vector>
  9. #include <cmath>
  10. #include <fstream>
  11. #include <queue>
  12. #include <iterator>
  13. #include <bitset>
  14. #include <set>
  15. #include <unordered_set>
  16. #include <map>
  17. #include <unordered_map>
  18.  
  19. using namespace std;
  20.  
  21. //Utilities
  22. #define sqr(x) ((x)*(x))
  23. #define cbr(x) ((x)*(x)*(x))
  24. #define rep(c, i, n) for((i)=(c); (i)<(n); (i)++)
  25.  
  26. //Geometry
  27. /**
  28. struct pt { long long x, y; };
  29. double vecmul(pt a, pt b) { //Векторное умножение А*В
  30.     return (a.x*b.y - b.x*a.y);
  31. }
  32. //скалярное умножение a*b = |a|*|b|*cos(a,b)
  33.  
  34. double dist(double ax, double ay, double bx, double by) { return sqrt(sqr(ax - bx) + sqr(ay - by)); }
  35. */
  36.  
  37. //DBG
  38. //template<typename T, typename T2>void printarr(T  a[], T2 sz, T2 beg = 0) { for (T2 i = beg; i<sz; i++) cout << a[i] << " "; cout << endl; }
  39. #define DBG(a)         cout<<#a<<"="<<(a)<<"\n"
  40. #define DBG2(a,b)       cout<<#a<<"="<<(a)<<", "<<#b<<"="<<(b)<<"\n"
  41. #define DBG3(a,b,c)     cout<<#a<<"="<<(a)<<", "<<#b<<"="<<(b)<<", "<<#c<<"="<<(c)<<"\n"
  42.  
  43. //Files
  44. #define FILE_MODE(FILE) freopen(FILE".in", "r", stdin), freopen(FILE".out", "w", stdout)
  45.  
  46. //Constants
  47. #define PI    3.1415926535897932
  48. #define INF   1011111111
  49. #define LLINF 1000111000111000111LL
  50. #define eps   1e-14
  51. #define mod   1000000007
  52. #define ll long long
  53. #define ull unsigned long long
  54. //-------------------------------------------------
  55. #define N 40
  56.  
  57. int n;
  58. char lab[N][N];
  59. int paint=0;
  60.  
  61. void dfs(int x, int y);
  62.  
  63. int main() {
  64.     cin >> n;
  65.     int i, j;
  66.     rep(0, i, n+2) {
  67.         lab[0][i] = '#';
  68.         lab[n + 1][i] = '#';
  69.         lab[i][0] = '#';
  70.         lab[i][n + 1] = '#';
  71.     }
  72.     rep(0, i, n) {
  73.         rep(0, j, n) {
  74.             cin >> lab[i+1][j+1];
  75.         }
  76.     }
  77.     rep(0, i, n+2) {
  78.         rep(0, j, n+2) {
  79.             cout << lab[i][j];
  80.         }
  81.         cout << endl;
  82.     }
  83.     dfs(1, 1);
  84.     dfs(n - 1, n - 1);
  85.     cout << paint*9-36;
  86.     return 0;
  87. }
  88.  
  89. void dfs(int y, int x)
  90. {
  91.     lab[y][x] = '$';
  92.     if (lab[y][x + 1] == '#') { paint++; };
  93.     DBG3(y, x, paint);
  94.  
  95.     if (lab[y][x - 1] == '#') { paint++; };
  96.     DBG3(y, x, paint);
  97.  
  98.     if (lab[y + 1][x] == '#') { paint++; };
  99.     DBG3(y, x, paint);
  100.  
  101.     if (lab[y - 1][x] == '#') { paint++; };
  102.     DBG3(y, x, paint);
  103.     cout << endl;
  104.  
  105.  
  106.     if (lab[y][x + 1] == '.') { dfs(y, x + 1); };
  107.     if (lab[y][x - 1] == '.') { dfs(y, x - 1); };
  108.     if (lab[y + 1][x] == '.') { dfs(y + 1, x); };
  109.     if (lab[y - 1][x] == '.') { dfs(y - 1, x); };
  110. }
Advertisement
Add Comment
Please, Sign In to add comment