Pagini recente » Cod sursa (job #2406269) | Cod sursa (job #878403) | Cod sursa (job #839288) | Cod sursa (job #1936454) | Cod sursa (job #2034935)
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <cstring>
#include <algorithm>
using namespace std;
#define MAXN 15
#define MAXM 3648
int a[MAXN][MAXM];
int sumlin[MAXM], scad[MAXM];
inline int nrbiti1(int x) {
int nr=0;
while(x>0) {
x=x&(x-1);
nr++;
}
return nr;
}
int main()
{
int n, m, r, c, i, j, nr, lin, col, sum, maxs, aux;
FILE *fi, *fo;
fi = fopen("elimin.in", "r");
fo = fopen("elimin.out", "w");
fscanf(fi, "%d%d%d%d", &n, &m, &r, &c);
for(i=0; i<n; i++)
for(j=0; j<m; j++) {
fscanf(fi, "%d", &a[i][j]);
sumlin[i]+=a[i][j];
}
nr=1<<m;
maxs=-32000*7294;
for(i=0; i<nr; i++)
if(nrbiti1(i)==c) {
memset(scad, 0, sizeof(scad));
for(col=0; col<m; col++)
if(i&(1<<col))
for(lin=0; lin<n; lin++)
scad[lin]+=a[lin][col];
for(lin=0; lin<n; lin++)
scad[lin]=sumlin[lin]-scad[lin];
sort(scad, scad+n);
sum=0;
for(lin=r; lin<n; lin++)
sum+=scad[lin];
if(sum>maxs)
maxs=sum;
}
fprintf(fo, "%d", maxs);
fclose(fi);
fclose(fo);
return 0;
}