20分 大佬求助
查看原帖
20分 大佬求助
1028513
_lijianqiao_楼主2023/8/10 19:18
#include<bits/stdc++.h>
using namespace std;

stack<int> a,bb;
int b[1000001],n,k;
long long sum;

int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>b[i];
	}
	for(int i=n;i>=1;i--){
		if(a.empty())a.push(b[i]),bb.push(1);
		else{
			while(!a.empty()&&a.top()<b[i]){
				sum+=bb.top();
				a.pop();
				bb.pop();
			}
			if(!a.empty()&&a.top()>b[i])sum+=bb.top();
			if(a.empty()||b[i]!=a.top())a.push(b[i]),bb.push(1);
			else k=bb.top(),bb.pop(),bb.push(k+1);
		}
	}
	cout<<sum;
	return 0;
}
2023/8/10 19:18
加载中...