Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.37 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. using uint = unsigned int;
  4. using ll = long long;
  5. using ull = unsigned long long;
  6. using pii = pair<int, int>;
  7. using pll = pair<ll, ll>;
  8. #define dbg(x) cerr<<#x": "<<(x)<<endl
  9. #define dbg_p(x) cerr<<#x": "<<(x).first<<' '<<(x).second<<endl
  10. #define dbg_v(x, n) {cerr<<#x"[]: ";for(long long _=0;_<n;++_)cerr<<(x)[_]<<' ';cerr<<endl;}
  11. #define all(v) v.begin(), v.end()
  12. #define fi first
  13. #define se second
  14.  
  15. template<typename T1, typename T2>
  16. ostream& operator <<(ostream &out, const pair<T1, T2> &item) {
  17. out << item.first << " " << item.second;
  18. return out;
  19. }
  20.  
  21. template<typename T>
  22. ostream& operator <<(ostream &out, const vector<T> &v) {
  23. for(const auto &item : v) out << item << ' ';
  24. return out;
  25. }
  26.  
  27. const int NMAX = 5010;
  28.  
  29. int dl[] = { 0, 1, 0, -1 };
  30. int dc[] = { -1, 0, 1, 0 };
  31.  
  32. double speed;
  33. int n, wx, wy;
  34. char comm[NMAX];
  35. int step[NMAX], spawnTime[NMAX];
  36. int tx[NMAX], ty[NMAX];
  37. int state[NMAX];
  38. vector<int> toSpawn[NMAX];
  39. set<int> alive;
  40.  
  41. struct lol {
  42. int currStep, x, y, dir, i;
  43. double acc, hp;
  44.  
  45.  
  46. bool updatePos(int tick) {
  47. acc += speed;
  48. while(acc >= 1) {
  49. while(comm[i] == 'T' && i < n) {
  50. dir = (dir + step[i]) % 4;
  51. ++i;
  52. currStep = 0;
  53. }
  54.  
  55. if(i == n) return false;
  56.  
  57. acc -= 1;
  58.  
  59. ++currStep;
  60. x += dl[dir];
  61. y += dc[dir];
  62.  
  63. if(currStep == step[i]) {
  64. ++i;
  65. currStep = 0;
  66. }
  67.  
  68. if(i == n) return false;
  69. }
  70. return true;
  71. }
  72. };
  73.  
  74.  
  75. lol v[NMAX];
  76.  
  77. int getDist(int x1, int y1, int x2, int y2) {
  78. return (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
  79. }
  80.  
  81. vector<vector<int>> getHarta(int x, int y) {
  82. v[NMAX - 1].i = 0;
  83. v[NMAX - 1].currStep = 0;
  84. v[NMAX - 1].x = x;
  85. v[NMAX - 1].y = y;
  86. v[NMAX - 1].dir = 1;
  87. v[NMAX - 1].acc = 0;
  88. v[NMAX - 1].hp = 123123;
  89.  
  90. vector<vector<int>> harta(NMAX, vector<int>(NMAX, 0));
  91. harta[v[NMAX - 1].y][v[NMAX - 1].x] = 1;
  92. while(v[NMAX - 1].updatePos(1)) harta[v[NMAX - 1].y][v[NMAX - 1].x] = 1;
  93. harta[v[NMAX - 1].y][v[NMAX - 1].x] = 1;
  94. return harta;
  95. }
  96.  
  97.  
  98. int main()
  99. {
  100. ios_base::sync_with_stdio(false);
  101.  
  102. int i, x, y, dir, nr, q, t, id, rng;
  103. double hp, dmg;
  104.  
  105. cin >> wx >> wy;
  106. cin >> x >> y;
  107.  
  108. dir = 1;
  109. i = 0;
  110. string line;
  111. cin.get();
  112. getline(cin, line);
  113. istringstream iss(line);
  114. while(iss >> comm[i] >> step[i]) ++i;
  115. n = i;
  116.  
  117. cin >> hp >> speed;
  118.  
  119. cin >> nr;
  120. for(i = 0; i < nr; ++i) {
  121. cin >> spawnTime[i];
  122. toSpawn[spawnTime[i]].push_back(i);
  123.  
  124. v[i].i = 0;
  125. v[i].currStep = 0;
  126. v[i].x = x;
  127. v[i].y = y;
  128. v[i].dir = 1;
  129. v[i].acc = 0;
  130. v[i].hp = hp;
  131. }
  132.  
  133. vector<vector<int>> harta = getHarta(x, y);
  134. for (int i = 0; i < wy; ++i)
  135. for (int j = 0; j < wx; ++j)
  136. cout << harta[i][j] << " \n"[j == wy - 1];
  137. return 0;
  138. }
  139.  
  140. /*
  141. 0 0 0 0 0 0 0 0 0 0
  142. 0 1 0 1 1 0 0 0 0 0
  143. 0 1 0 0 1 0 0 0 0 0
  144. 1 1 0 0 1 0 0 0 0 0
  145. 0 0 1 1 1 1 0 1 1 0
  146. 0 0 0 1 1 1 0 0 1 0
  147. 0 0 1 1 1 1 0 1 1 1
  148. 0 0 0 1 0 0 0 1 0 0
  149. 0 0 0 1 1 1 0 1 0 0
  150. 0 0 0 0 0 0 1 1 0 0
  151.  
  152. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement