Pagini recente » Cod sursa (job #1290392) | Cod sursa (job #937891) | Cod sursa (job #1015854) | Cod sursa (job #1843246) | Cod sursa (job #402599)
Cod sursa(job #402599)
# include <fstream.h>
using namespace std;
ifstream f ("elimin.in");
ofstream g ("elimin.out");
int a[600][600],b[1000],i,j,aux,smax=-10000000,q,w,n,m,s[1000],sf,z,k,kk,ss[1000],ss2[1000];
void xyz ()
{int i;
sf=0;
for (k=1;k<=m;k++)
{
z=ss[k];
for (i=1;i<=q;i++)
z=z-a[b[i]][k];
sf=sf+z;
s[k]=z;
}
sort (s+1,s+m+1);
for (i=1;i<=w;i++)
sf=sf-s[i];
if (smax<sf)
smax=sf;
}
void back (int i)
{
int val;
for (val=b[i-1]+1;val<=n;val++)
{
b[i]=val;
if (i==q)
xyz ();
if (i<q)
back (i+1);
}
}
void xyz2 ()
{int i;
sf=0;
for (k=1;k<=n;k++)
{
z=ss2[k];
for (i=1;i<=w;i++)
z=z-a[b[i]][k];
sf=sf+z;
s[k]=z;
}
sort (s+1,s+m+1);
for (i=1;i<=w;i++)
sf=sf-s[i];
if (smax<sf)
smax=sf;
}
void back2 (int i)
{
int val;
for (val=b[i-1]+1;val<=m;val++)
{
b[i]=val;
if (i==w)
xyz2 ();
if (i<w)
back2 (i+1);
}
}
int main ()
{
f>>n>>m>>q>>w;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
f>>a[i][j];
for (i=1;i<=m;i++)
{
sf=0;
for (j=1;j<=n;j++)
sf=sf+a[j][i];
ss[i]=sf;
}
for (i=1;i<=n;i++)
{
sf=0;
for (j=1;j<=m;j++)
sf=sf+a[i][j];
ss2[i]=sf;
}
if (n<m)
back (1);
else
back2 (1);
g<<smax;
}