烽火台。。。我的代码很蠢 int main(){ int n; while (cin >> n){ vector<int> heights(n, 0); for (int i = 0; i < n; ++i){ cin >> heights[i]; } int cnt = n; for (int i = 0; i < n; ++i){ heights.push_back(heights[i]); } int cnt2 = 0; set<pair<int, int>> twins; for (int i = 0; i < n; ++i){ for (int j = i + 2; j < i + n - 1; ++j){ bool seen = true; for (int k = i + 1; k < j; ++k){ if (heights[k] > heights[i] || heights[k] > heights[j]){ seen = false; break; } } if (seen){ int ii = i % n, jj = j % n; if (ii > jj){ twins.insert({ ii, jj }); } else{ twins.insert({ jj, ii }); } seen = false; } } } for (int i = 2 * n - 1; i >= n; --i){ for (int j = i - 2; j > i - (n - 1); --j){ bool seen = true; for (int k = i - 1; k > j; --k){ if (heights[k] > heights[i] || heights[k] > heights[j]){ seen = false; break; } } if (seen){ int ii = i % n, jj = j % n; if (ii > jj){ twins.insert({ ii, jj }); } else{ twins.insert({ jj, ii }); } seen = false; } } } cnt = cnt + twins.size(); cout << cnt << endl; } }
点赞 评论
牛客网
牛客网在线编程
牛客网题解
牛客企业服务