#include <iostream> #include "dzialka.h" #include "message.h" using namespace std; int main() { if (MyNodeId() > 0) { return 0; } int n, m; n=GetFieldHeight(); m=GetFieldWidth(); //cin >> n >> m; int t[n][m]; int i, j; long long wynik=0; for (i=0; i<n; i++) { for (j=0; j<m; j++) { t[i][j]=IsUsableCell(j, i); //cin >> t[i][j]; } } int k[n][m]; k[0][0]=t[0][0]; for (i=1; i<n; i++) { k[0][i]=k[0][i-1]+t[0][i]; } for (j=1; j<m; j++) { k[j][0]=k[j-1][0]+t[j][0]; } for (i=1; i<n; i++) { for (j=1; j<m; j++) { k[i][j]=k[i][j-1]+k[i-1][j]-k[i-1][j-1]+t[i][j]; } } int a, b; int l, r; for (i=0; i<n; i++) { for (j=0; j<m; j++) { for (l=i; l<n; l++) { for (r=j; r<m; r++) { a=k[l][r]; if (i>0) { a-=k[i-1][r]; } if (j>0) { a-=k[l][j-1]; } if (i>0 && j>0) { a+=k[i-1][j-1]; } b=(l-i+1)*(r-j+1); if (a==b) { wynik++; } } } } } cout << wynik << "\n"; }
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 | #include <iostream> #include "dzialka.h" #include "message.h" using namespace std; int main() { if (MyNodeId() > 0) { return 0; } int n, m; n=GetFieldHeight(); m=GetFieldWidth(); //cin >> n >> m; int t[n][m]; int i, j; long long wynik=0; for (i=0; i<n; i++) { for (j=0; j<m; j++) { t[i][j]=IsUsableCell(j, i); //cin >> t[i][j]; } } int k[n][m]; k[0][0]=t[0][0]; for (i=1; i<n; i++) { k[0][i]=k[0][i-1]+t[0][i]; } for (j=1; j<m; j++) { k[j][0]=k[j-1][0]+t[j][0]; } for (i=1; i<n; i++) { for (j=1; j<m; j++) { k[i][j]=k[i][j-1]+k[i-1][j]-k[i-1][j-1]+t[i][j]; } } int a, b; int l, r; for (i=0; i<n; i++) { for (j=0; j<m; j++) { for (l=i; l<n; l++) { for (r=j; r<m; r++) { a=k[l][r]; if (i>0) { a-=k[i-1][r]; } if (j>0) { a-=k[l][j-1]; } if (i>0 && j>0) { a+=k[i-1][j-1]; } b=(l-i+1)*(r-j+1); if (a==b) { wynik++; } } } } } cout << wynik << "\n"; } |