Submission
Status:
PPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: Ryuthin94
Problemset: หุ่นพัง
Language: cpp
Time: 0.003 second
Submitted On: 2025-12-14 21:27:56
/*
TASK : r2_broken
LANG : C++
*/
#include <bits/stdc++.h>
using namespace std;
int n;
vector<string> grid;
vector<vector<int>> memo;
bool f(int r, int c)
{
if (r >= n || c >= n || grid[r][c] == 'X')
return false;
if (r == n - 1 && c == n - 1)
return true;
if (memo[r][c] != -1)
return memo[r][c];
return memo[r][c] = f(r + 1, c) || f(r, c + 1);
}
int main()
{
cin >> n;
grid.resize(n);
for (int i = 0; i < n; i++)
cin >> grid[i];
memo.resize(n, vector<int>(n, -1));
int count = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (f(i, j))
count++;
}
}
cout << count;
}