제출 #1182539

#제출 시각아이디문제언어결과실행 시간메모리
1182539quannnguyen2009K개의 묶음 (IZhO14_blocks)C++20
0 / 100
2 ms324 KiB
#include<bits/stdc++.h> #define int long long #define fi first #define se second #define pb push_back #define ii pair<int, int> #define sz(v) (int)v.size() #define all(v) v.begin(), v.end() using namespace std; const int N = 1e5+5, mod = 1e9+7, inf = 1e18; int n, k; int a[N]; int dp[N], tmp[N]; struct It { int id, d, mn; }; signed main() { freopen("blocks.in", "r", stdin); freopen("blocks.out", "w", stdout); ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> k; for (int i=1; i<=n; i++) cin >> a[i]; for (int i=1; i<=n; i++) tmp[i] = max(tmp[i-1], a[i]); tmp[0] = inf; // for (int i=1; i<=n; i++) cout << tmp[i] << " "; // cout << '\n'; for (int j=2; j<=k; j++) { vector<It> v; dp[0] = inf; for (int i=1; i<=n; i++) { if(!sz(v) || a[i]<a[v.back().id]) { v.pb({i, tmp[i-1], (sz(v) ? min(v.back().mn, tmp[i-1]+a[i]) : tmp[i-1]+a[i])}); } else { int dp_mn = inf; while(sz(v) && a[i]>=a[v.back().id]) { dp_mn = min(dp_mn, v.back().d); v.pop_back(); } dp_mn = min(dp_mn, tmp[i-1]); // cout << tmp[i-1] << '\n'; v.pb({i, dp_mn, (sz(v) ? min(v.back().mn, dp_mn+a[i]) : dp_mn+a[i])}); } if(i>=j) dp[i] = v.back().mn; else dp[i] = inf; // for (auto [a, b, c]: v) cout << a << " " << b << " " << c << '\n'; // cout << '\n'; } for (int i=0; i<=n; i++) { tmp[i] = dp[i]; // cout << dp[i] << " "; } } cout << tmp[n]; }

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

blocks.cpp: In function 'int main()':
blocks.cpp:22:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   22 |     freopen("blocks.in", "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
blocks.cpp:23:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   23 |     freopen("blocks.out", "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...