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;
}
# 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;
}
全部评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享