#include <bits/stdc++.h>
using namespace std;
typedef vector<int> vi;
typedef vector<vi> vvi;
int solve_k1(int N, int C, vvi &S){
auto itr = max_element(S.begin(),S.end(),[](vi &a, vi &b){
return accumulate(a.begin(),a.end(),0) < accumulate(b.begin(),b.end(),0);
});
return accumulate(itr->begin(),itr->end(),0);
}
int solve_k2(int N, int C, vvi &S){
vi H(2e6+1,0);
for(int i = 1;i < N;i++){
for(int j = 0;j < i;j++){
H[max(S[i][0],S[j][0]) + max(S[i][1],S[j][1])]++;
}
}
for(int i = 2e6;i >= 0;i--){
if(C - H[i] <= 0) return i;
C -= H[i];
}
return 0;
}
int vtoi(vi &v, int K){
int ans = 0;
for(int i = 0,p = 1;i < K;i++,p *= 11) ans += p * v[i];
return ans;
}
vi itov(int a, int K){
vi ans(K);
for(int i = 0;i < K;i++,a /= 11) ans[i] = a % 11;
return ans;
}
// int solve_s10(int N, int C, int K, vvi &S){
// int sz = pow(11,K);
// vvi dp(K,vi(sz,0));
// for(int i = 0;i < N;i++){
// for(int l = K-1;l;l--){
// }
// }
// }
int main(){
int N,K,C;
cin >> N >> K >> C;
vvi S(N,vi(K));
for(int i = 0;i < N;i++) for(int j = 0;j < K;j++) cin >> S[i][j];
if(K == 1) cout << solve_k1(N,C,S);
else if(K == 2) cout << solve_k2(N,C,S);
else cout << -1;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |