문제
링크
풀이
#include <iostream>
#include <vector>
using namespace std;
inline bool check1(const vector<vector<char>> &v) {
for (int i=0; i<10; i++) for (int j=0; j<6; j++) {
int x = (v[i][j] == 'X') + (v[i][j+1] == 'X') + (v[i][j+2] == 'X') + (v[i][j+3] == 'X') + (v[i][j+4] == 'X');
int d = (v[i][j] == '.') + (v[i][j+1] == '.') + (v[i][j+2] == '.') + (v[i][j+3] == '.') + (v[i][j+4] == '.');
if (x == 4 && d == 1) return true;
}
return false;
}
inline bool check2(const vector<vector<char>> &v) {
for (int i=0; i<6; i++) for (int j=0; j<10; j++) {
int x = (v[i][j] == 'X') + (v[i+1][j] == 'X') + (v[i+2][j] == 'X') + (v[i+3][j] == 'X') + (v[i+4][j] == 'X');
int d = (v[i][j] == '.') + (v[i+1][j] == '.') + (v[i+2][j] == '.') + (v[i+3][j] == '.') + (v[i+4][j] == '.');
if (x == 4 && d == 1) return true;
}
return false;
}
inline bool check3(const vector<vector<char>> &v) {
for (int i=0; i<6; i++) for (int j=0; j<6; j++) {
int x = (v[i][j] == 'X') + (v[i+1][j+1] == 'X') + (v[i+2][j+2] == 'X') + (v[i+3][j+3] == 'X') + (v[i+4][j+4] == 'X');
int d = (v[i][j] == '.') + (v[i+1][j+1] == '.') + (v[i+2][j+2] == '.') + (v[i+3][j+3] == '.') + (v[i+4][j+4] == '.');
if (x == 4 && d == 1) return true;
}
return false;
}
inline bool check4(const vector<vector<char>> &v) {
for (int i=4; i<10; i++) for (int j=0; j<6; j++) {
int x = (v[i][j] == 'X') + (v[i-1][j+1] == 'X') + (v[i-2][j+2] == 'X') + (v[i-3][j+3] == 'X') + (v[i-4][j+4] == 'X');
int d = (v[i][j] == '.') + (v[i-1][j+1] == '.') + (v[i-2][j+2] == '.') + (v[i-3][j+3] == '.') + (v[i-4][j+4] == '.');
if (x == 4 && d == 1) return true;
}
return false;
}
bool solve(void) {
vector<vector<char>> v(10, vector<char>(10));
for (int i=0; i<10; i++) for (int j=0; j<10; j++) cin >> v[i][j];
return check1(v) || check2(v) || check3(v) || check4(v);
}
int main(void) {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout << solve();
return 0;
}