后面爆了四个re,看了前面的讨论,o2不管用啊
查看原帖
后面爆了四个re,看了前面的讨论,o2不管用啊
423006
傻肥狍子楼主2021/6/11 08:34
#include <bits/stdc++.h>
using namespace std;
const int maxn=3e6+7;
int a[maxn],ans[maxn];
int main()
{
	int n;
	scanf("%d",&n);   //读入数据量
	for(int i=0; i<n; i++){
		scanf("%d",&a[i]);
	}
	stack<int> m;
	m.push(0);
	for(int i=1; i<n; i++){
		while(!m.empty() && a[i]>a[m.top()]){
			ans[m.top()]=i;
			m.pop();
		}
		m.push(i);
	}
//	printf("haha");
	while(!m.empty()){
		ans[m.top()]=-1;
		m.pop();
	}
	for(int i=0; i<n; i++){
		printf("%d ",ans[i]+1);
	}
	return 0;
 } 
2021/6/11 08:34
加载中...