#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; } } |