yanlian

#include
# include 
#include
using namespace std;

// 判断是否为山峰
bool isPeak(const vector>& land, int i, int j, int n, int m) {
    int val = land[i][j];
    int dirs[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
    for (int k = 0; k < 4; k++) {
        int ni = i + dirs[k][0];
        int nj = j + dirs[k][1];
        if (ni >= 0 && ni < n && nj >= 0 && nj < m && land[ni][nj] >= val) {
            return false;
        }
    }
    return true;
}

int main() {
    int n, m, T;
    cin >> n >> m;
    vector> land(n, vector(m));
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cin >> land[i][j];
        }
    }
    cin >> T;
    for (int t = 0; t < T; t++) {
        int x1, y1, x2, y2;
        cin >> x1 >> y1 >> x2 >> y2;
        swap(land[x1 - 1][y1 - 1], land[x2 - 1][y2 - 1]);
    }

    vector> peaks;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if (isPeak(land, i, j, n, m)) {
                peaks.push_back({i + 1, j + 1});
            }
        }
    }

    sort(peaks.begin(), peaks.end());

    cout << peaks.size() << endl;
    for (const auto& peak : peaks) {
        cout << peak.first << " " << peak.second << endl;
    }

    return 0;
}
全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务