对于每个蛋仔必然是先跑到与中心点横或纵坐标相同的行或列,再向中心点跑 不存在横向移动后又正向移动,在这过程中会使得横纵坐标越靠近坍塌边界,明显不符合题意,考虑以上做法,考虑单个蛋仔的坐标(x,y),如果先移动到横坐标相同的行,需要时间为abs(x-(n/2+1))此时边界靠近纵坐标 abs(x-(n/2+1)),此时再向中心点跑去,所需要满足的条件显然为abs(y-(m/2+1))+ abs(x-(n/2+1))< (m/2+1);同理另一种情况 则需满足abs(y-(m/2+1))+ abs(x-(n/2+1))< (n/2+1);二者满足其一即可,则蛋仔能逃脱的条件为abs(y-(m/2+1))+ abs(x-(n/2+1))< max((m/2+1),(n/2+1));则时间复杂度为o(k),ac代码如下


using namespace std;
#define int long long
void solve()
{
    int n, m, k;
    cin >> n >> m >> k;
    int cnt = 0;
    for (int i = 1; i <= k; i++)
    {
        int x, y;
        cin >> x >> y;
        int ax = abs(x - (n / 2 + 1));
        int ay = abs(y - (m / 2 + 1));
        if (ax + ay < max(m / 2 + 1, n / 2 + 1))
            cnt++;
    }
    cout << cnt << '\n';
}
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);
    int t = 1;
    // cin >> t;
    while (t--)
        solve();
    return 0;
}
完结撒花