Pagini recente » Cod sursa (job #2178791) | Cod sursa (job #2531789) | Cod sursa (job #1695465) | Cod sursa (job #2265539) | Cod sursa (job #654053)
Cod sursa(job #654053)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("elimin.in");
ofstream g("elimin.out");
int n,m,r,c,i,j,v[1000][100],a[200],sumx=0;
void readN() {
for (int i=1;i<=m;i++)
for (int j=1;j<=n;j++)
f >> v[i][j];
}
void readR() {
for (int i=1;i<=m;i++)
for (int j=1;j<=n;j++)
f >> v[j][m-i+1];
swap(m,n);
swap(r,c);
}
void check() {
int sum[1000],i,j;
for (i=1;i<=m;i++) sum[i]=v[i][0];
for (i=1;i<=c;i++)
for (j=1;j<=m;j++)
sum[j]-=v[j][a[i]];
sort(sum+1,sum+m+1);
int s=0;
for (i=r+1;i<=m;i++) s+=sum[i];
sumx=max(s,sumx);
}
void combinari(int l) {
int i;
if (l<=c) {
for (i=a[l-1]+1;i<=n-c+l;i++) {
a[l]=i;
combinari(l+1);
}
}
else
check();
}
int main () {
f >> m >> n >> r >> c;
if (m<n) readR();
else readN();
for (i=1;i<=m;i++)
for (j=1;j<=n;j++) {
v[i][0]+=v[i][j];
v[0][j]+=v[i][j];
}
combinari(1);
g << sumx << '\n';
f.close();g.close();
return 0;
}