Pagini recente » Cod sursa (job #170471) | Cod sursa (job #518382) | Cod sursa (job #2121265) | Cod sursa (job #2320292) | Cod sursa (job #378127)
Cod sursa(job #378127)
#include <iostream>
#include <fstream>
using namespace std;
int e[600][600], sl[1000], s;
int main() {
fstream f1, f2;
int n, m, r, c, i, j, p, q, max=0;
int semn[20], del[1000];
f1.open("elimin.in", ios::in);
f1>>n>>m>>r>>c;
for(i=1; i<=n; i++) {
for(j=1; j<=m; j++) {
f1>>e[i][j];
}
}
f1.close();
if(n<m) {
for(i=1; i<=n; i++) {
for(j=1; j<=m; j++) {
if(j>i) {
swap(e[i][j], e[j][i]);
}
}
}
swap(n, m); swap(r, c);
}
for(i=1; i<=n; i++) {
for(j=1; j<=m; j++) {
sl[i]+=e[i][j];
//sc[j]+=e[i][j];
}
}
for(i=1; i<(1<<m); i++) {
q=i; p=0; s=0;
for(j=1; j<=m; j++) {
semn[j]=q%2; q=q/2;
if(semn[j]==1) { p++; }
}
if(p==c) {
for(j=1; j<=n; j++) {
del[j]=sl[j];
}
for(j=1; j<=m; j++) {
if(semn[j]==1) {
for(q=1; q<=n; q++) {
del[q]-=e[q][j];
}
}
else {
//s+=sc[j];
}
}
sort(del+1, del+n+1);
//elimin primele r
for(j=r+1; j<=n; j++) {
s+=del[j];
}
if(s>max) { max=s; }
}
}
f2.open("elimin.out", ios::out);
f2<<max<<endl;
f2.close();
return 0;
}