Pagini recente » Cod sursa (job #2390561) | Cod sursa (job #1392437) | Cod sursa (job #2789347) | Cod sursa (job #2122906) | Cod sursa (job #119023)
Cod sursa(job #119023)
#include <fstream.h>
#include <values.h>
ifstream fin("elimin.in");
ofstream fout("elimin.out");
long max=MAXINT;
int n,m,l,c,auxc,auxl,lin[1000],col[1000],a[100][100];
void citire()
{
fin>>n>>m>>l>>c;
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
fin>>a[i][j];
fin.close();
}
void suma()
{
long S=0;
for (int i=0;i<n;i++)
if (lin[i]==1)
for (int j=0;j<m;j++)
S+=a[i][j];
for (int k=0;k<m;k++)
if (col[k]==1)
for (int r=0;r<n;r++)
if (lin[r]==0)
S+=a[r][k];
if (S<max)
max=S;
}
void backc(int k)
{
if (k==m)
{
if (auxc==c)
suma();
return ;
}
if (auxc<c)
{
col[k]=1;
auxc++;
backc(k+1);
col[k]=0;
auxc--;
backc(k+1);
}
else
backc(k+1);
}
void backl(int k)
{
if (k==n)
{
if (auxl==l)
backc(0);
return ;
}
if (auxl<l)
{
lin[k]=1;
auxl++;
backl(k+1);
lin[k]=0;
auxl--;
backl(k+1);
}
else
{
backl(k+1);
}
}
int main()
{
citire();
backl(0);
long Su=0;
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
Su+=a[i][j];
Su-=max;
fout<<Su<<"\n";
fout.close();
return 0;
}