Pagini recente » Cod sursa (job #1414652) | Cod sursa (job #993435) | Cod sursa (job #2577593) | Cod sursa (job #2185702) | Cod sursa (job #567455)
Cod sursa(job #567455)
# include <fstream>
# include <vector>
# include <algorithm>
using namespace std;
std :: ifstream f ("elimin.in");
std :: ofstream g ("elimin.out");
vector <vector < int > > a;
int s[1000], x[1000];
int n, m, l, c, L, C, sol, i, j;
inline void make (){
int i, j, st = 0;
for (i = 1; i <= m; ++i) s[i] = 0;
for (i = 1; i <= n; ++i)
for (j = 1; j <= m; ++j)
s[j] += a[i][j] * (!x[i]);
sort (s + 1, s + m + 1);
for (i = m; i > c; --i)
st = st + s[i];
if (sol < st) sol = st;
}
inline bool ok (){
int i, ret = 0;
for (i = 1; i <= n; ++i)
ret = ret + x[i];
return ret == l;
}
void back (){
int k = 1;
x[k] = -1;
do {
while (x[k] < 1){
++x[k];
if (n == k){
if (ok ()) make ();
}
else x[++k] = -1;
}
--k;
} while ( k > 0 );
}
int main (){
f >> n >> m >> l >> c;
if (n <= m){
for (i = 0; i <= n; ++i)
a.push_back (vector <int> (m + 1));
for (i = 1; i <= n; ++i)
for (j = 1; j <= m; ++j)
f >> a[i][j];
back ();
}
else{
for (i = 0; i <= m; ++i)
a.push_back (vector <int> (n + 1));
for (i = 1; i <= n; ++i)
for (j = 1; j <= m; ++j)
f >> a[j][i];
n ^= m ^= n ^= m;
l ^= c ^= l ^= c;
back ();
}
g << sol << '\n';
g.close ();
return 0;
}