新人第一篇题解 记录一下自己的笨蛋方法
Bingbong的蛋仔世界
https://ac.nowcoder.com/acm/contest/78807/C
using namespace std;
int a[502][502];
int main() {
int n, m, k, lunshu = 0, val = 0;
cin >> n >> m >> k;
if (m >= n && (m >= 3 && n >= 3))
{
lunshu = (m - 1) / 2;
}//如果行数崩塌到1但列数仍然可以崩塌时 轮数就以列数为准 因为此时列数崩塌次数涵盖了行数
else if (n >= m && (m >= 3 && n >= 3))
{
lunshu = (n - 1) / 2;
}//行数大于列数的情况
else if (n == 1 && m >= 3)
{
lunshu = (m - 1) / 2;
}
else if (m == 1 && n >= 3)
{
lunshu = (n - 1) / 2;
}
while (k--)
{
int i, j;
cin >> i >> j;
a[i][j]++;
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
int xx = abs(n / 2 + 1 - i);
int yy = abs(m / 2 + 1 - j);
//求出当前坐标离中心点的绝对距离
if (a[i][j] != 0)
{
if (xx + yy <= lunshu &&( n == 1 || m == 1))
{
val += a[i][j];
}//如果是一条直线的话 横轴纵轴的绝对值的和等于轮数也能到中点
else if(xx+yy<lunshu&&((n>=3&&m>=3)&&((i==n)&&(j==m))))
{
val+=a[i][j];
}//如果是一个矩形 并且这个蛋仔在边缘的话 绝对值的和等于轮数也到不了终点
else if(xx+yy<=lunshu&&((n>=3&&m>=3)))
{
val += a[i][j];
}//如果不在边缘的话 绝对值的和可以等于轮数
}
}
}
cout << val << endl;
return 0;
}