Pagini recente » Cod sursa (job #1598737) | Cod sursa (job #2893815) | Cod sursa (job #2985589) | Cod sursa (job #2451432) | Cod sursa (job #1012249)
#include <iostream>
#include <fstream>
#include <algorithm>
#define sz 700
#define infinit 1<<31
#define verf ++poz == hg ? in.read (ch, hg), poz = 0 : 0
using namespace std;
const char *FIN = "elimin.in", *FOU = "elimin.out";
const int MAX = 500001, hg = 1 << 13;
ifstream in (FIN);
ofstream out (FOU);
char ch[hg];
int poz;
void cit ( int &x ) {
if (ch[0] == '\0')
{
in.read (ch, hg);
}
else
{
for (; ch[poz] < '0' || ch[poz] > '9' ; verf) ;
}
for (x = 0 ; ch[poz] >= '0' && ch[poz] <= '9' ; x = x * 10 + ch[poz] - '0', verf) ;
}
int matrix[sz][sz];
int sline[sz],sMax=(-1)*infinit,slinesec[sz];
bool include[sz];
int n,m,r,c;
void read()
{
int aux;
cit(n);
cit(m);
cit(r);
cit(c);
if(n<m)
{
for(int i=1; i<=n ; i++)
{
for(int j=1 ; j<=m ; j++)
{
cit(aux);
matrix[j][i]=aux;
slinesec[j]+=aux;
}
}
swap(n,m);
swap(r,c);
}
else
{
for(int i=1 ; i<=n ; i++)
{
for(int j=1; j<=m ; j++)
{
cit(aux);
matrix[i][j]=aux;
slinesec[i]+=matrix[i][j];
}
}
}
}
void bk()
{
int b=1;
for(int i=0; i < (1<<m) ; i++)
{
int bytes=0;
for(int j=0; (1<<j)<=i && bytes<=c+1;j++)
{
if( ((1<<j)&i) != 0)
{
include[j+1]=1;
bytes++;
}
else
{
include[j+1]=0;
}
}
if(bytes==c)
{
for(int i=1;i<=n;i++)
{
sline[i]=slinesec[i];
for(int j=1;j<=m;j++)
{
if(include[j]==1)
{
sline[i]-=matrix[i][j];
int x;
}
}
}
sort(sline + 1 , sline + n + 1);
int sum=0;
for(int i=r+1;i<=n;i++)
{
sum=sum+sline[i];
}
if(sum>sMax)
{
sMax=sum;
}
}
}
}
void write()
{
out<<sMax;
}
int main()
{
read();
for(int i=1;i<=n;i++)
cout<<slinesec[i]<<" ";
bk();
write();
}