作业介绍

void read(int &x)
{ 
	int h;
    char ch = getchar();
    x = 0;
    if(ch == '-')
    {
    	h = -1;	
	}
	else
	{
		h = 1;
	}
     
    for (; ch < '0' || ch > '9'; ch = getchar())
    {
        ;
    }
    for (; ch >='0' && ch <= '9'; ch = getchar()) 
    {
        x = x * 10 + ch - '0'; 
    }
    
    x *= h;
}

单调栈模板一

#include <iostream>
#include <stack>
using namespace std;

stack<int> stk;
int a[3000030], n;
int ans[3000030];

int main()
{
	cin >> n;
	for(int i = 1; i <= n; i++)
	{
		scanf("%d", &a[i]);
	}
	
	for(int i = 1; i <= n; i++)
	{
		//确保单调性 
		while(!stk.empty() && a[stk.top()] < a[i])
		{
			ans[stk.top()] = i;
			stk.pop();
		}
		stk.push(i);		
	}
	while(!stk.empty())
	{
		ans[stk.top()] = 0;
		stk.pop();
	}
	for(int i = 1; i <= n; i++)
	{
		printf("%d ", ans[i]);
	}
	return 0;
}

题目

认领作业后才可以查看作业内容。
状态
正在进行…
题目
10
开始时间
2025-1-9 0:00
截止时间
3333-5-1 23:59
可延期
24 小时