Pagini recente » Cod sursa (job #2017817) | Cod sursa (job #741587) | Cod sursa (job #585583) | Cod sursa (job #2488121) | Cod sursa (job #1576629)
#include <stdio.h>
#include <algorithm>
using namespace std;
int mat[15][7300],sum[7300],ales[7300],maxim,n,m,l,c;
void verif(){
int i,j,rasp=0;
for(i=1;i<=m;i++)
sum[i]=0;
for(i=1;i<=n;i++)
if(ales[i]==1)
for(j=1;j<=m;j++)
sum[j]-=mat[i][j];
for(j=1;j<=m;j++)
for(i=1;i<=n;i++)
sum[j]+=mat[i][j];
sort(sum+1,sum+m+1);
for(i=c+1;i<=m;i++)
rasp+=sum[i];
if(rasp>maxim)
maxim=rasp;
}
void bkt(int niv,int ant){
int i;
if(niv==l){
verif();
}
else{
for(i=ant+1;i<=n;i++){
ales[i]=1;
bkt(niv+1,i);
ales[i]=0;
}
}
}
int main(){
FILE *fin,*fout;
fin=fopen("elimin.in","r");
fout=fopen("elimin.out","w");
int i,j,copie;
fscanf(fin,"%d%d%d%d",&n,&m,&l,&c);
if(n<=m){
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
fscanf(fin,"%d",&mat[i][j]);
}
else{
copie=m;
m=n;
n=copie;
copie=c;
c=l;
l=copie;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
fscanf(fin,"%d",&mat[j][i]);
}
bkt(0,0);
fprintf(fout,"%d",maxim);
fclose(fin);
fclose(fout);
return 0;
}