Pagini recente » Cod sursa (job #1033021) | Cod sursa (job #584954) | Cod sursa (job #1700623) | Cod sursa (job #2145290) | Cod sursa (job #6942)
Cod sursa(job #6942)
#include<fstream>
using namespace std;
int a[150][150],m,n,r,c;
int b[150][150];
void citeste()
{
int i,j;
ifstream in("elimin.in");
in>>m>>n>>r>>c;
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
in>>a[i][j];
in.close();
}
void sume()
{
int i,j;
for (j=1;j<=n;j++)
for (i=1;i<=m;i++)
a[0][j]=a[0][j]+a[i][j];
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
a[i][0]=a[i][0]+a[i][j];
}
void linii(int a[150][150])
{
int i,j,aux;
int v[150];
for (i=1;i<=m;i++)
v[i]=i;
for (i=1;i<m;i++)
for (j=i+1;j<=m;j++)
if (a[v[i]][0]>a[v[j]][0])
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
for (i=1;i<=r;i++)
{
for (j=1;j<=n;j++)
a[0][j]=a[0][j]-a[v[i]][j];
for (j=0;j<=n;j++)
a[v[i]][j]=0;
}
}
void coloane(int a[150][150])
{
int i,j,aux;
int v[200];
for (j=1;j<=n;j++)
v[j]=j;
for (i=1;i<n;i++)
for (j=i+1;j<=n;j++)
if (a[0][v[i]]>a[0][v[j]])
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
for (i=1;i<=c;i++)
{
for (j=1;j<=m;j++)
a[j][0]=a[j][0]-a[j][v[i]];
for (j=0;j<=m;j++)
a[j][v[i]]=0;
}
}
void copy()
{
int i,j;
for (i=0;i<=m;i++)
for (j=0;j<=n;j++)
b[i][j]=a[i][j];
}
int sumafin(int a[150][150])
{
int i,j,s=0;
for (i=1;i<=m;i++)
s=s+a[i][0];
return s;
}
ofstream out("elimin.out");
void afiseaza()
{
int i,j;
for (i=0;i<=m;i++)
{
for (j=0;j<=n;j++)
out<<b[i][j]<<" ";
out<<"\n";
}
}
int main()
{
citeste();
sume();
int s1,s2;
copy();
coloane(a);
linii(a);
s1=sumafin(a);
linii(b);
coloane(b);
s2=sumafin(b);
if (s1>s2)
out<<s1;
else
out<<s2;
out.close();
return 0;
}