#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 |
- |