Pagini recente » Rating Mircea Dan (mir.dan) | Cod sursa (job #1808640) | Cod sursa (job #1773804) | Cod sursa (job #1144001) | Cod sursa (job #1840487)
#include<bits/stdc++.h>
using namespace std;
int c[7500], r[7500];
int a[7500][20], sum;
int n, m, R, C, rs[7500], sumax=0;
ifstream f("elimin.in");
ofstream g("elimin.out");
void back(int l, int u){
int i, j;
if (l==C+1){
sum=0;
for(i=1; i<=n; i++){
r[i]=c[i];
for(j=1; j<l; j++) {
r[i]-=a[i][rs[j]];
}
}
sort(r+1, r+1+n);
for(i=R+1; i<=n; i++) sum+=r[i];
sumax=max(sumax, sum);
} else for(i=u+1; i<=m; i++)
{
rs[l]=i;
back(l+1, i);
}
}
int main(){
f>>n>>m>>R>>C;
if (m<=n){
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++) {
f>>a[i][j];
sum+=a[i][j];
}
} else {
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++) {
f>>a[j][i];
sum+=a[j][i];
}
swap(n, m);
swap(R, C);
}
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++) c[i]+=a[i][j];
back(1, 0);
g<<sumax;
return 0;
}