#include using namespace std; typedef long long ll; typedef unsigned long long ull; struct house { int value; int idx; }; int main(void) { ios_base::sync_with_stdio(false); int total; cin >> total; int result = 0; deque dq; for (int i = 0; i < total; ++i) { int newNum; cin >> newNum; if (dq.empty()) { dq.push_back({ newNum, i }); } else { auto & item = dq.back(); if (item.value > newNum) { dq.push_back({newNum, i}); } else if (item.value < newNum) { // remove last ones while(!dq.empty() && dq.back().value < newNum) dq.pop_back(); if (dq.empty()) { dq.push_back({newNum, i}); } else { if(dq.back().value == newNum) { result += i - dq.back().idx - 1; } dq.pop_back(); } } else { // equal val result += i - item.idx - 1; dq.pop_back(); } } } cout << result << endl; return 0; }