@[Niao_niao](/user/199475) 感觉ans[i-v.size()]有点问题?
这样似乎不能算出上一个数的下标
建议开一个数组存a v存权值在a中的下标 直接访问不容易错
这是一份按照以上思路修改的代码
```cpp
#include<bits/stdc++.h>
using namespace std;
int n;
int a[3000011];
vector<int> v;
vector<int> ans;
int main(){
cin>>n;
ans.resize(n + 1, 0);
a[0] = INT_MAX;
v.push_back(0);
for(int i=1;i<=n;i++){
cin >> a[i];
while (a[v.back()]<a[i]){
ans[v.back()]=i;
v.pop_back();
}
v.push_back(i);
}
for(int i=1;i<=n;i++){
cout<<ans[i]<<' ';
}
return 0;
}
```
by silhouettel @ 2024-06-24 21:03:33
@[silhouettel](/user/772661) 一样的,改了之后调试也都是10分。
by Niao_niao @ 2024-06-25 10:06:10
@[Niao_niao](/user/199475) 我提供的这份代码是可以ac的
by silhouettel @ 2024-06-25 15:41:52