답안 #584330

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

const int M = 6e6 + 5;
const int N = 505;
const int K = 7;
ar<int, K> og[N];
vector<int> a[N], tot;
int n, p[N], sum[M], k;

void go(int i, int c, ar<int, K> a){
	if(c == k){
		sum[a[0]]++;
		return;
	}
	
	for(int j=i;j<n;j++){
		ar<int, K> b = a;
		for(int k=1;k<K;k++){
			if(og[p[j]][k] > b[k]){
				b[0] += (og[p[j]][k] - b[k]);
				b[k] = og[p[j]][k];
			}
		}
		
		go(j + 1, c + 1, b);
	}
}

signed main(){
	ios::sync_with_stdio(0); cin.tie(0);
	
	int c; cin>>n>>k>>c;
	for(int i=0;i<n;i++){
		for(int j=1;j<=k;j++) cin>>og[i][j], a[i].push_back(og[i][j]);
		sort(a[i].rbegin(), a[i].rend());
		a[i].push_back(i);
	}
	
	sort(a, a + n);
	reverse(a, a + n);
	n = min(40, n);
	for(int i=0;i<n;i++) p[i] = a[i].back();
	go(0, 0, {});
	for(int i=M-1;~i;i--){
		//~ if(sum[i]) cout<<sum[i]<<" "<<i<<"\n";
		if(c <= sum[i]){
			cout<<i<<"\n";
			return 0;
		} c -= sum[i];
	}
	
	assert(false);
}

# 결과 실행 시간 메모리 Grader output
1 Runtime error 8 ms 2260 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 126 ms 4112 KB Output is correct
2 Correct 127 ms 4832 KB Output is correct
3 Correct 131 ms 5068 KB Output is correct
4 Correct 129 ms 5344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 119 ms 380 KB Output is correct
2 Correct 123 ms 368 KB Output is correct
3 Incorrect 125 ms 372 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 8 ms 2260 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -