#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n, k;
cin >> n >> k;
int m=0;
vector <int> ile1;
int t[n+2][n+2];
int i, j;
char a;
int l;
for (i=0; i<n+2; i++)
{
t[0][i]=-2000;
t[n+1][i]=-2000;
t[i][0]=-2000;
t[i][n+1]=-2000;
}
for (i=1; i<n+1; i++)
{
for (j=1; j<n+1; j++)
{
cin >> a;
if (a=='.')
{
t[i][j]=-1;
}
else
{
t[i][j]=0;
}
}
}
for (i=1; i<n+1; i++)
{
for (j=1; j<n+1; j++)
{
if (t[i][j]==-1)
{
if (t[i-1][j]==0 || t[i+1][j]==0 || t[i][j-1]==0 || t[i][j+1]==0)
{
t[i][j]=1;
m++;
}
}
}
}
for (i=1; i<n+1; i++)
{
for (j=1; j<n+1; j++)
{
if (t[i][j]==1)
{
ile1.push_back(0);
if (t[i-1][j]==-1)
{
ile1[ile1.size()-1]++;
}
if (t[i+1][j]==-1)
{
ile1[ile1.size()-1]++;
}
if (t[i][j-1]==-1)
{
ile1[ile1.size()-1]++;
}
if (t[i][j+1]==-1)
{
ile1[ile1.size()-1]++;
}
}
}
}
for (l=0; l<ile1.size(); l++)
{
}
if (k==1)
{
cout << m;
}
else
{
long long wynik=0;
wynik+=m*(m-1)/2;
wynik=wynik%1000000007;
for (i=0; i<ile1.size(); i++)
{
wynik+=ile1[i];
}
wynik=wynik%1000000007;
cout << wynik;
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | #include <iostream> #include <vector> using namespace std; int main() { int n, k; cin >> n >> k; int m=0; vector <int> ile1; int t[n+2][n+2]; int i, j; char a; int l; for (i=0; i<n+2; i++) { t[0][i]=-2000; t[n+1][i]=-2000; t[i][0]=-2000; t[i][n+1]=-2000; } for (i=1; i<n+1; i++) { for (j=1; j<n+1; j++) { cin >> a; if (a=='.') { t[i][j]=-1; } else { t[i][j]=0; } } } for (i=1; i<n+1; i++) { for (j=1; j<n+1; j++) { if (t[i][j]==-1) { if (t[i-1][j]==0 || t[i+1][j]==0 || t[i][j-1]==0 || t[i][j+1]==0) { t[i][j]=1; m++; } } } } for (i=1; i<n+1; i++) { for (j=1; j<n+1; j++) { if (t[i][j]==1) { ile1.push_back(0); if (t[i-1][j]==-1) { ile1[ile1.size()-1]++; } if (t[i+1][j]==-1) { ile1[ile1.size()-1]++; } if (t[i][j-1]==-1) { ile1[ile1.size()-1]++; } if (t[i][j+1]==-1) { ile1[ile1.size()-1]++; } } } } for (l=0; l<ile1.size(); l++) { } if (k==1) { cout << m; } else { long long wynik=0; wynik+=m*(m-1)/2; wynik=wynik%1000000007; for (i=0; i<ile1.size(); i++) { wynik+=ile1[i]; } wynik=wynik%1000000007; cout << wynik; } } |
English