답안 #584297

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
584297 2022-06-27T07:27:28 Z amunduzbaev Olympiads (BOI19_olympiads) C++17
0 / 100
1694 ms 13936 KB
#include "bits/stdc++.h"
using namespace std;
 
#define ar array
typedef int64_t ll;
//~ #define int ll

const int K = 8;
vector<ar<int, K>> dp[2][K];

signed main(){
	ios::sync_with_stdio(0); cin.tie(0);
	
	int n, k, c; cin>>n>>k>>c;
	dp[0][0].push_back({});
	
	auto add = [&](auto& a, auto& b){
		ar<int, K> res {};
		for(int j=1;j<K;j++){
			res[j] = max(a[j], b[j]);
			res[0] += res[j];
		} return res;
	};
	
	for(int i=1;i<=n;i++){
		ar<int, K> a {};
		for(int j=1;j<=k;j++){
			cin>>a[j];
		}
		
		int t = i & 1, p = !t;
		for(int j=0;j<=k;j++){
			dp[t][j].clear();
			dp[t][j].insert(dp[t][j].end(), dp[p][j].begin(), dp[p][j].end());
			if(j){
				for(auto x : dp[p][j - 1]){
					dp[t][j].push_back(add(x, a));
				}
				sort(dp[t][j].begin(), dp[t][j].end(), [&](auto& a, auto& b){
					return a[0] > b[0];
				});
				while((int)dp[t][j].size() > c * 5) dp[t][j].pop_back();
			}
		}
	}
	
	assert((int)dp[n & 1][k].size() == c);
	cout<<dp[n & 1][k][c - 1][0]<<"\n";
}

# 결과 실행 시간 메모리 Grader output
1 Runtime error 137 ms 2160 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 69 ms 11028 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1694 ms 13936 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 137 ms 2160 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -