Pagini recente » Cod sursa (job #1819026) | Cod sursa (job #2641838) | Cod sursa (job #2116418) | Cod sursa (job #1407041) | Cod sursa (job #2081855)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("elimin.in");
ofstream fout("elimin.out");
int a[7301][21],i,j,Xl[7301],Sl[7301],St,X[21],r,c,n,m,Max,S;
void comb(int k){
int i;
for(i=X[k-1]+1;i<=m;i++)
{ X[k]=i;
for(j=1;j<=n;j++){
Xl[j]-=a[j][i];
St-=a[j][i];
}
if(k==c){
for(j=1;j<=n;j++)
Sl[j]=Xl[j];
int sum=St;
sort(Sl+1,Sl+n+1);
for(j=1;j<=r;j++)
sum-=Sl[j];
Max=max(Max,sum);
}
else
comb(k+1);
for(j=1;j<=n;j++){
Xl[j]+=a[j][i];
St+=a[j][i];
}
}
}
int main()
{fin>>n>>m>>r>>c;
if(n>=m)
for(i=1;i<=n;i++){
S=0;
for(j=1;j<=m;j++){
fin>>a[i][j];
S+=a[i][j];
}
Xl[i]=S;
St+=Xl[i];
}
else{
for(i=1;i<=n;i++)
for(j=1;j<=m;j++){
fin>>a[j][i];
Xl[j]+=a[j][i];
St+=a[j][i];
}
swap(n,m);
swap(r,c);
}
comb(1);
fout<<Max;
return 0;
}