제출 #72057

#제출 시각아이디문제언어결과실행 시간메모리
72057마릴린 희정 (#118)박스런 (FXCUP3_box)C++17
17 / 100
1081 ms21880 KiB
#include<bits/stdc++.h>
using namespace std;
int N;
int H[1010101];
int ans[1010101];
int main()
{
  scanf("%d", &N);
  for(int i=0; i<N; ++i) scanf("%d", H+i);
  H[N] = (int)1e9+1;
  
  int from = 0, to = 0;
  multiset<int> S; S.insert(H[0]);
  for(int t=0; t<N; ++t)
  {
    while(*S.rbegin() >= H[to+1])
    {
      S.insert(H[++to]);
      S.erase(S.find(H[from++]));
    }
    //printf("%d %d\n", from, to);
    ans[t] = to+1;
    if(from == 0)
      S.insert(H[++to]);
    else
      S.insert(H[--from]);
  }
  for(int i=0; i<N; ++i)
    if(ans[i] == N) printf("-1 ");
    else printf("%d ", ans[i]-i);
  puts("");
  return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

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