Pagini recente » Cod sursa (job #384690) | Cod sursa (job #761131) | Cod sursa (job #1429265) | Cod sursa (job #1484705) | Cod sursa (job #992395)
Cod sursa(job #992395)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("elimin.in");
ofstream g("elimin.out");
short int m[20][550],i,j,n,l,c,k,lt,ct,v[21];
int sums[550],sum,rasp;
int verif()
{
int sum=0;
for (int i=1;i<=l;++i)
for (int j=1;j<=c;++j)
if (!v[j])
{
sums[i]+=m[i][j];
}
else break;
sort (sums+1,sums+l+1);
/*for (int i=1;i<=c;++i)
g<<sums[i];*/
for (int i=l;i>lt;--i)
sum+=sums[i];
for (int i=1;i<=l;++i)
sums[i]=0;
return sum;
}
int verif2()
{
int sum=0;
for (int i=1;i<=l;++i)
for (int j=1;j<=c;++j)
if (!v[i])
{
sums[j]+=m[i][j];
}
else break;
sort (sums+1,sums+c+1);
/*for (int i=1;i<=c;++i)
g<<sums[i];*/
for (int i=c;i>ct;--i)
sum+=sums[i];
for (int i=1;i<=c;++i)
sums[i]=0;
return sum;
}
int main()
{
f>>l>>c>>lt>>ct;
/*if (c>l)
l^=c,c^=l,l^=c,lt^=ct,ct^=lt,lt^=ct;*/
if (l<=c)
for (i=1;i<=l;++i)
for (j=1;j<=c;++j)
f>>m[i][j];
else
{
for (i=1;i<=l;++i)
for (j=1;j<=c;++j)
f>>m[j][i];
l^=c,c^=l,l^=c,lt^=ct,ct^=lt,lt^=ct;
}
if (l>c)
{
for (i=1;i<=ct;++i)v[i]=1;
do
{
sum=verif();
if (sum>rasp)
rasp=sum;
}while(prev_permutation(v+1,v+c+1));
}
else
{
for (i=1;i<=lt;++i)v[i]=1;
do
{
sum=verif2();
if (sum>rasp)
rasp=sum;
}while(prev_permutation(v+1,v+l+1));
}
g<<rasp;
return 0;
}