作业介绍
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 小时