Submission #1297899

#TimeUsernameProblemLanguageResultExecution timeMemory
1297899_the_lost_coderOlympiads (BOI19_olympiads)C++20
0 / 100
2095 ms576 KiB
#include<bits/stdc++.h> using namespace std; // #include "debug_header.h" #define int long long #define ll long long int mi; int num; int K; int tot; int C; vector<vector<int>>v; vector<vector<int>>x; void dfs(int pos,int curr,int id){ if(curr<mi || num==C)return; num++; if(id+1<v[pos].size())dfs(pos,curr+v[pos][id+1]-v[pos][id],id+1); for(int i=pos+1;i<v.size();i++){ int cu = curr+v[i][1]-v[i][0]; if(cu<mi || num==C) break; dfs(i,cu,1); } } void get(){ num=0; dfs(0,tot,0); } int32_t main(){ ios::sync_with_stdio(0); cin.tie(0); // freopen("roboherd.in", "r", stdin); // freopen("roboherd.out", "w", stdout); int N; cin>>N; cin>>K; cin>>C; for(int i=0;i<N;i++){ vector<int>p(K); for(int &x:p){ cin>>x; } x.push_back(p); } for(int j=0;j<K;j++){ vector<int>te; for(int i=0;i<N;i++){ te.push_back(x[i][j]); } sort(te.begin(),te.end(),greater<int>()); tot+=te[0]; v.push_back(te); } sort(v.begin(), v.end(), [](const vector<int>& a, const vector<int>& b){ return a[1] > b[1]; }); int lo=0; int hi=1e13+11; while(lo<=hi){ mi=(lo+hi-1)/2; get(); if(num<C) hi=mi-1; else lo=mi+1; } cout<<(hi)<<"\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...