Pagini recente » Cod sursa (job #1703429) | Cod sursa (job #1105239) | Cod sursa (job #2005016) | Cod sursa (job #2174138) | Cod sursa (job #1064503)
#include <fstream>
#include <algorithm>
#include <cstring>
#define In "elimin.in"
#define Out "elimin.out"
using namespace std;
short v[20],a[20][8000],b[8000][20], n, m, l ,c;
int sol;
inline void Read()
{
int i, j;
ifstream f(In);
f>> n >> m >> l >> c;
if(n <= m)
{
for(i = 1;i <= n; ++i)
for(j = 1 ;j <= m; ++j)
f>>a[i][j];
}
else
{
for(i = 1;i <= n; ++i)
for(j = 1 ;j <= m; ++j)
f>>b[i][j];
for(i = 1;i <= n; ++i)
for(j = 1;j <= m; ++j)
a[j][i] = b[i][j];
swap(n,m);
swap(l,c);
}
}
inline void Solve()
{
int i,sum = 0,j ,k = 1;
int s[8000];
memset(s,0,sizeof(s));
for(i = 1;i <= n; ++i)
if(k <= l && i == v[k])
++k;
else
{
for(j = 1;j <= m; ++j)
s[j] += a[i][j];
}
sort(s+1,s+m+1);
for(i = c+1; i<= m; ++i)
sum += s[i];
sol = max(sol,sum);
}
inline void Back(const int k)
{
if(k==l+1)
{
Solve();
return ;
}
for(int i=v[k-1]+1;i <= n;++i)
{
v[k] = i;
Back(k+1);
}
}
inline void Write()
{
ofstream g(Out);
g<<sol<<"\n";
g.close();
}
int main()
{
Read();
Back(1);
Write();
return 0;
}