제출 #671849

#제출 시각아이디문제언어결과실행 시간메모리
671849smartmonkyK blocks (IZhO14_blocks)C++14
0 / 100
19 ms41428 KiB
#include <bits/stdc++.h> #define ff first #define ss second #define pb push_back #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() using namespace std; const int N = 1e5 + 50; int dp[N][105]; main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); memset(dp, 0x3f3f, sizeof(dp)); int n, k; cin >> n >> k; vector <int> v(n + 1); for(int i = 1; i <= n; i++){ cin >> v[i]; } dp[1][0] = -1e9; for(int i = 1; i <= n; i++)dp[1][i] = max(v[i], dp[1][i - 1]); for(int i = 2; i <= k; i++){ deque <pair <int,int> > d; for(int j = i; j <= n; j++){ int prev = dp[i - 1][j - 1]; while(!d.empty() && d.front().ff < v[j]){ prev = min(d.front().ss, prev); d.pop_back(); } if(d.empty() || v[j] >= d.back().ff && prev + v[j] < d.back().ff + d.back().ss){ d.push_back({v[j], prev}); } dp[i][j] = d.back().ff + d.back().ss; } } cout << dp[k][n]; }

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

blocks.cpp:13:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   13 | main(){
      | ^~~~
blocks.cpp: In function 'int main()':
blocks.cpp:34:40: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   34 |    if(d.empty() || v[j] >= d.back().ff && prev + v[j] < d.back().ff + d.back().ss){
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...