Submission #1094159

#TimeUsernameProblemLanguageResultExecution timeMemory
1094159ramzialoulouTetris (COCI17_tetris)C++17
48 / 80
0 ms348 KiB
#include <bits/stdc++.h> using namespace std; #ifdef Ramzi #include "debug.h" #else #define debug(...) #endif int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, m; cin >> n >> m; vector<string> s(n); for (int i = 0; i < n; i++) { cin >> s[i]; } auto safe = [&](int i, int j) -> bool { return (i >= 0 && i < n && j >= 0 && j < m); }; auto f1 = [&](int x, int y) -> int { vector<int> dx = {0, 1, 1}; vector<int> dy = {1, 1, 0}; for (int i = 0; i < 3; i++) { int nx = x + dx[i]; int ny = y + dy[i]; if (!safe(nx, ny) || s[nx][ny] != s[x][y]) { return 0; } } return 1; }; auto f2 = [&](int x, int y) -> int { bool ret = true, ret2 = true; for (int i = 1; i < 4; i++) { if (!safe(x, y + i) || s[x][y + i] != s[x][y]) { ret = false; } if (!safe(x + i, y) || s[x + i][y] != s[x][y]) { ret2 = false; } } return (ret || ret2 ? 1 : 0); }; auto f3 = [&](int x, int y) -> bool { vector<int> dx = {0, 1, 1}; vector<int> dy = {1, 0, -1}; bool ret = true; for (int i = 0; i < 3; i++) { int nx = x + dx[i]; int ny = y + dy[i]; if (!safe(nx, ny) || s[nx][ny] != s[x][y]) { ret = false; } } dx = {1, 1, 2}; dy = {0, 1, 1}; bool ret2 = true; for (int i = 0; i < 3; i++) { int nx = x + dx[i]; int ny = y + dy[i]; if (!safe(nx, ny) || s[nx][ny] != s[x][y]) { ret2 = false; } } return (ret || ret2 ? 1 : 0); }; auto f4 = [&](int x, int y) { vector<int> dx = {0, 1, 1}; vector<int> dy = {1, 1, 2}; bool ret = true; for (int i = 0; i < 3; i++) { int nx = x + dx[i]; int ny = y + dy[i]; if (!safe(nx, ny) || s[nx][ny] != s[x][y]) { ret = false; } } dx = {1, 1, 2}; dy = {0, -1, -1}; bool ret2 = true; for (int i = 0; i < 3; i++) { int nx = x + dx[i]; int ny = y + dy[i]; if (!safe(nx, ny) || s[nx][ny] != s[x][y]) { ret2 = false; } } return (ret || ret2 ? 1 : 0); }; auto f5 = [&](int x, int y) -> int { vector<int> dx = {1, 1, 1}; vector<int> dy = {-1, 0, 1}; bool ret = true; for (int i = 0; i < 3; i++) { int nx = x + dx[i]; int ny = y + dy[i]; if (!safe(nx, ny) || s[nx][ny] != s[x][y]) { ret = false; } } dx = {0, 0, 1}; dy = {1, 2, 1}; bool ret2 = true; for (int i = 0; i < 3; i++) { int nx = x + dx[i]; int ny = y + dy[i]; if (!safe(nx, ny) || s[nx][ny] != s[x][y]) { ret2 = false; } } return (ret || ret2 ? 1 : 0); }; vector<int> cnt(5); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (s[i][j] != '.') { if (f1(i, j)) { ++cnt[0]; j += 2; } cnt[1] += f2(i, j); cnt[2] += f3(i, j); cnt[3] += f4(i, j); cnt[4] += f5(i, j); } } } for (int i = 0; i < 5; i++) { cout << cnt[i] << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...