Pagini recente » Cod sursa (job #2642152) | Cod sursa (job #119037)
Cod sursa(job #119037)
#include <fstream.h>
#include <values.h>
ifstream fin("elimin.in");
ofstream fout("elimin.out");
long long max=MAXINT;
long n,m,l,c,auxc,auxl,lin[1009],col[1009],a[200][200];
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 long S=0;
for (int k=0;k<m;k++)
if (col[k]==1)
for (int r=0;r<n;r++)
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 sortare()
{
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
a[i][m]+=a[i][j];
short ok=1,p=n;
while (ok)
{
ok=0;
p--;
for (int y=0;y<p;y++)
if (a[y][m]>a[y+1][m])
{
for (int p=0;p<m+1;p++)
{
int aux=a[y][p];
a[y][p]=a[y+1][p];
a[y+1][p]=aux;
}
ok=1;
}
}
}
void eliminare()
{
for (int i=0;i<l;i++)
for (int j=0;j<m;j++)
a[i][j]=0;
}
int main()
{
citire();
sortare();
eliminare();
backc(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;
}