Submission #584335

#TimeUsernameProblemLanguageResultExecution timeMemory
584335amunduzbaevOlympiads (BOI19_olympiads)C++17
44 / 100
1519 ms7124 KiB
#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); if(k >= 3) n = min(n, 60); 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); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...