Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define loop(i,from,to) for (int i = from; i < to; ++i)
- #include <bits/stdc++.h>
- using std::cin;
- using std::cout;
- using std::endl;
- using std::vector;
- using std::string;
- using std::map;
- using std::pair;
- const int INF = 1e9+7;
- const double eps = 1e-6;
- bool f;
- pair<int, int> steps[] = { {-1, -1}, {-1, 0}, {-1, 1}, {0, 1}, {1, 1}, {1, 0}, {1, -1}, {0, -1} };
- signed main() {
- std::ios::sync_with_stdio(false);
- cin.tie(0);
- freopen("INPUT.TXT", "r", stdin);
- int n, m, k; cin >> n >> m >> k;
- char c;
- vector< vector<int> > data(n, vector<int>());
- loop(i, 0, n)
- loop(j, 0, m) {
- cin >> c;
- if (c == '*')
- data[i].emplace_back(1);
- else
- data[i].emplace_back(0);
- }
- vector< vector<int> > nd(n, vector<int>());
- loop(cnt, 0, k) {
- loop(i, 0, n)
- loop(j, 0, m) {
- int count_alive = 0;
- for(auto step: steps)
- count_alive += data[(i + step.first + n) % n][(j + step.second + m) % m];
- nd[i].emplace_back(count_alive);
- }
- loop(i, 0, n)
- loop(j, 0, m) {
- if (data[i][j]) {
- if (nd[i][j] < 2 || nd[i][j] > 3)
- data[i][j] = 0;
- }
- else
- if (nd[i][j] == 3)
- data[i][j] = 1;
- }
- nd.assign(n, vector<int>());
- }
- loop(i, 0, n) {
- loop(j, 0, m) {
- if (data[i][j]) cout << "*";
- else cout << ".";
- }
- cout << endl;
- }
- //std::cout << "Hello World!\n";
- return 0;
- }
Add Comment
Please, Sign In to add comment