Pagini recente » Cod sursa (job #296999) | Cod sursa (job #1618427) | Cod sursa (job #1044793) | Cod sursa (job #582865) | Cod sursa (job #674173)
Cod sursa(job #674173)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("elimin.in");
ofstream g("elimin.out");
int x[100], n,m, y[100][100],lin,r,c,a[900000][100];
int bun(int k)
{
for(int j=1; j<k; j++)
if(x[j]==x[k])
return 0;
return 1;
}
void back(int i)
{
lin=0;
while(i>0&& i<=n)
{
x[i]++;
if(x[i]>n)
{
x[i]=0;
i--;
}
else
if(bun(i))
i++;
if(i>n)
{
lin++;
for(int j=1;j<=n;j++)
y[lin][j]=x[j];
i=n;
}
}
}
int main()
{
int i,j,k,s,el,max=0;
f>>m>>n>>r>>c;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
f>>a[i][j];
back (1);
//max=0;
//pe coloana, summa minima pe vertical
for(k=1;k<=lin;k++)
{
s=0;
for(i=1;i<=m;i++)
for(j=1;j<=n-c;j++)
s=s+a[i][y[k][j]]; // suma cu coloanele eliminate
if(max<s)
max=s, el=k;
}
for(k=n-c;k<n;k++)
for(i=1;i<=m;i++)
a[i][y[el][k]]=0;
//suma minima pe linii, pe orizontala
for(k=1;k<=lin;k++)
{
s=0;
for(j=1;j<=n-c;j++)
for(i=1;i<=m;i++)
s=s+a[i][y[k][j]]; // suma cu liniile eliminate
if(max<s)
max=s, el=k;
}
s=0;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
s+=a[i][j];
g<<s;
return 0;
}