#include using namespace std; bool isBridgePossible(int index1, int index2, vector & ter) { int lineNumber = ter[index1]; for (int i = index1 + 1; i < index2; i++) { if (ter[i] > lineNumber) return false; } return true; } int bridgesAtLine(vector & verticesAtLine, vector & ter) { int result = 0; for (int i = 1; i < verticesAtLine.size(); i++) { int firstIndex = verticesAtLine[i - 1]; int secondIndex = verticesAtLine[i]; if (isBridgePossible(firstIndex, secondIndex, ter)) result += (secondIndex - firstIndex - 1); } return result; } int main() { int N; cin>>N; vector> lines; vector ter; lines.resize(1000000); for(int i =0; i < N; i++){ int t; cin>>t; ter.emplace_back(t); lines[t].emplace_back(i); } int result = 0; for (auto lineVector: lines) { result += bridgesAtLine(lineVector, ter); } cout << result << endl; return 0; } /* 5 1 2 3 3 1 */