답안 #962654

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
962654 2024-04-14T06:22:06 Z biximo Feast (NOI19_feast) C++17
0 / 100
692 ms 23424 KB
#include <bits/stdc++.h>
#define N 300005
using namespace std;
typedef pair<long double, int> pi;
pi DP[N][2];
int n, k, seq[N];
int doDP(long double pen) {
	for(auto&i: DP) for(auto&j: i) j = make_pair(-9e18,0);
	DP[0][0] = {0,0};
	for(int i = 1; i <= n+1; i ++) {
		DP[i][0] = max(DP[i-1][0], DP[i-1][1]);
		DP[i][1] = max(DP[i-1][1], make_pair(DP[i-1][0].first-pen, DP[i-1][0].second+1));
		DP[i][1].first += seq[i];
	}
	return DP[n+1][0].second;
}
int main() {
    cin.tie(0)->sync_with_stdio(0);
    cin >> n >> k;
    int pc = 0;
    for(int i = 1; i <= n; i ++) {
    	cin >> seq[i];
    	if(seq[i] > 0 && seq[i-1] <= 0) pc ++;
    }
    k = min(k, pc);
    long double l=0,h=1e13;
    for(int i = 0; i < 100; i ++) {
    	long double m = (l+h)/2;
    	int res = doDP(m);
    	if(res > k) {
    		l = m;
    	} else {
    		h = m;
    	}
    }
    cout << round(DP[n+1][0].first + k*l);
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 649 ms 23192 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 644 ms 21328 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 692 ms 23424 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 261 ms 20056 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 261 ms 20056 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 261 ms 20056 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 649 ms 23192 KB Output isn't correct
2 Halted 0 ms 0 KB -