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