Submission #72171

#TimeUsernameProblemLanguageResultExecution timeMemory
72171신딩없는 신딩팀 (#118)Box Run (FXCUP3_box)C++17
100 / 100
170 ms7448 KiB
#include<bits/stdc++.h>
using namespace std;
int N,H[500005],dp[500005];
vector<pair<int,int> >stk;
int main(){
    scanf("%d",&N);
    for(int i=1;i<=N;i++)
        scanf("%d",H+i);
    stk.push_back({0,2e9});
    fill(dp,dp+N+1,2e9);
    for(int i=1;i<=N;i++){
        pair<int,int> cur={i,H[i]};
        while(cur.second>stk.back().second)stk.pop_back();
        int k=i-stk.back().first-1;
        dp[k]=min(dp[k],i);
        stk.push_back(cur);
    }
    for(int i=N-1;i;i--)
        dp[i]=min(dp[i+1],dp[i]);
    for(int i=1;i<=N;i++)
        printf("%d ",dp[i]==2e9?-1:dp[i]-i);
    return 0;
}

Compilation message (stderr)

box.cpp: In function 'int main()':
box.cpp:6:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&N);
     ~~~~~^~~~~~~~~
box.cpp:8:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d",H+i);
         ~~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...