답안 #671844

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
671844 2022-12-14T04:35:34 Z smartmonky K개의 묶음 (IZhO14_blocks) C++14
0 / 100
16 ms 41428 KB
#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];
	}
	for(int i = 0; i <= n; i++)dp[0][i] = 0;
	for(int i = 1; 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();
			}
			dp[i][j] = prev + v[j];
			if(d.empty() || prev + v[j] > d.back().ff + d.back().ss){
				d.push_back({v[j], prev});
			}
		}
	}
	cout << dp[k][n];
}

Compilation message

blocks.cpp:13:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   13 | main(){
      | ^~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 16 ms 41428 KB Output is correct
2 Incorrect 15 ms 41384 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 16 ms 41400 KB Output is correct
2 Incorrect 16 ms 41404 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 16 ms 41428 KB Output is correct
2 Incorrect 15 ms 41384 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 16 ms 41428 KB Output is correct
2 Incorrect 15 ms 41384 KB Output isn't correct
3 Halted 0 ms 0 KB -