PKU 3250 Bad Hair Day

  • スタックを使って高さを管理していけば解けるようです
int main()
{
	vector<int> stk;
	int N;
	cin >> N;
	ll sum = 0;
	for (int i = 0; i < N; ++i) {
		int h;
		cin >> h;
		while (!stk.empty() && stk.back() <= h) {
			stk.pop_back();
		}
		sum += stk.size();
		stk.push_back(h);
	}
	cout << sum << endl;
}