为什么手写stack不能过,STLstack能过?(手写stack还有TLE!)

P5788 【模板】单调栈

@[Myself_Hisy](/user/922691) ```cpp #include<cstdio> using namespace std; int stack[3000001]; int a[3000001]; int ans[3000001]; int main() { int n , top = -1; scanf( "%d" , &n ); for( int i = 1; i <= n; i++ ) { scanf( "%d" , &a[i] ); } for( int i = n; i >= 1; i-- ) { while( top >= 0 && a[i] >= a[stack[top]] ) { top--; } top++; stack[top] = i; if( top <= 0 ) { ans[i] = 0; } else { ans[i] = stack[top - 1]; } } for( int i = 1; i <= n; i++ ) { printf( "%d " , ans[i] ); } return 0; } ``` 手写可过
by XBaiC @ 2023-08-24 21:27:00


|