답안 #126765

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
126765 2019-07-08T11:27:40 Z mechfrog88 Olympiads (BOI19_olympiads) C++14
44 / 100
2000 ms 1524 KB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#pragma GCC optimize("unroll-loops,no-stack-protector")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
 
using namespace __gnu_pbds;
using namespace std;
 
template <typename T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
 
typedef long long ll;
typedef long double ld;
 
vector <vector<ll>> arr;

multiset <ll,greater<ll>> ans;
ll n,k,c;

void func(ll index,vector<ll> arr1,ll siz){
	if (siz == k){
		ll q = 0;
		for (int z=0;z<k;z++){
			q += arr1[z];
		}
		if (ans.size() >= 2000){
			if (q > (*ans.rbegin())){
				ans.insert(q);
				ans.erase(--ans.end());
			}
		} else {
			ans.insert(q);
		}
		return;
	}
	if (index >= n) return;
	func(index+1,arr1,siz);
	for (int z=0;z<k;z++){
		arr1[z] = max(arr1[z],arr[index][z]);
	}
	func(index+1,arr1,siz+1);
}

int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cin >> n >> k >> c;
	arr.resize(n,vector<ll>(k));
	for (int z=0;z<n;z++){
		for (int x=0;x<k;x++){
			cin >> arr[z][x];
		}
	}
	if (k == 1){
		vector <ll> lol;
		for (int z=0;z<n;z++){
			ll temp = 0;
			for (int x=0;x<k;x++){
				temp += arr[z][x];
			}
			lol.push_back(temp);
		}
		sort(lol.rbegin(),lol.rend());
		cout << lol[c-1] << endl;
	} else if (k == 2){
		vector <ll> lol;
		for (int z=0;z<n;z++){
			vector <ll> temp(k);
			for (int x=0;x<k;x++){
				temp[x] = arr[z][x];
			}
			for (int q=z+1;q<n;q++){
				ll c = 0;
				for (int x=0;x<k;x++){
					c += max(temp[x],arr[q][x]);
				}
				lol.push_back(c);
			}
		}
		sort(lol.rbegin(),lol.rend());
		cout << lol[c-1] << endl;
	} else {
		vector <ll> temp(k);
		func(0,temp,0);
		ll t = 1;
		for (auto it = ans.begin();it !=ans.end();it++){
			if (t == c){
				cout << *it << endl;
				break;
			}t++;
		}
	}
}
# 결과 실행 시간 메모리 Grader output
1 Correct 13 ms 1524 KB Output is correct
2 Correct 11 ms 1524 KB Output is correct
3 Correct 9 ms 1520 KB Output is correct
4 Correct 6 ms 1520 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 483 ms 508 KB Output is correct
2 Correct 480 ms 504 KB Output is correct
3 Correct 481 ms 376 KB Output is correct
4 Correct 485 ms 504 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 2054 ms 504 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 13 ms 1524 KB Output is correct
2 Correct 11 ms 1524 KB Output is correct
3 Correct 9 ms 1520 KB Output is correct
4 Correct 6 ms 1520 KB Output is correct
5 Correct 483 ms 508 KB Output is correct
6 Correct 480 ms 504 KB Output is correct
7 Correct 481 ms 376 KB Output is correct
8 Correct 485 ms 504 KB Output is correct
9 Execution timed out 2054 ms 504 KB Time limit exceeded
10 Halted 0 ms 0 KB -