제출 #255201

#제출 시각아이디문제언어결과실행 시간메모리
255201SaboonZalmoxis (BOI18_zalmoxis)C++14
100 / 100
502 ms257016 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 1e6 + 10; int a[maxn], dp[maxn][32], r[maxn][32]; int extraprint(int k, int extra){ if (extra == 0){ printf("%d ", k); return 0; } int ret = extraprint(k-1, extra-1) + 1; extra -= ret; return ret + extraprint(k-1, extra); } int n; int printer(int l, int k, int extra){ if (a[l] == k){ printf("%d ", k); return 0; } if (r[l][k-1] < n and r[r[l][k-1]][k-1] != -1){ int ret = printer(l, k-1, extra); ret += printer(r[l][k-1], k-1, extra-ret); return ret; } int ret = printer(l, k-1, extra); ret += extraprint(k-1, extra-ret); return ret; } int main(){ ios_base::sync_with_stdio(false); int k; scanf("%d%d", &n, &k); for (int i = 0; i < n; i++) scanf("%d", &a[i]); memset(r, -1, sizeof r); for (int i = n-1; i >= 0; i--){ dp[i][a[i]] = 0; r[i][a[i]] = i+1; for (int l = a[i]+1; l <= 30; l++){ if (r[i][l-1] < n and r[r[i][l-1]][l-1] != -1){ r[i][l] = r[r[i][l-1]][l-1]; dp[i][l] = dp[i][l-1] + dp[r[i][l-1]][l-1]; } else{ r[i][l] = r[i][l-1]; dp[i][l] = dp[i][l-1] + 1; } } } assert(dp[0][30] <= k); printer(0, 30, k-dp[0][30]); printf("\n"); }

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

zalmoxis.cpp: In function 'int main()':
zalmoxis.cpp:40:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d", &n, &k);
  ~~~~~^~~~~~~~~~~~~~~~
zalmoxis.cpp:42:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", &a[i]);
   ~~~~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...