Pagini recente » Cod sursa (job #2356516) | Statistici Petrican Danut (dtz.petrican) | Cod sursa (job #2439835) | Cod sursa (job #1336333) | Cod sursa (job #2218630)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
int n,m,r,c;
priority_queue <int> q;
int M[1000][1000];
int st[1000];
int v[1000];
int Max=0;
void Check()
{
int i,j;
int s=0;
for (i=1;i<=n;i++)
v[i]=0;
for (i=1;i<=r;i++)
{
v[st[i]]=1;
}
for (j=1;j<=m;j++)
{
s=0;
for (i=1;i<=n;i++)
{
if (v[i]==0)
s+=M[i][j];
}
q.push(s*-1);
}
for (i=1;i<=c;i++)
q.pop();
s=0;
while (!q.empty())
{
s+=q.top()*-1;
q.pop();
}
if (s>Max)
Max=s;
}
void Back(int i)
{
if (i>r)
{
Check();
}
else
{
for (int j=st[i-1]+1;j<=n-(r-i);j++)
{
st[i]=j;
Back(i+1);
}
}
}
int main()
{
ifstream in("elimin.in");
ofstream out("elimin.out");
in>>n>>m>>r>>c;
int i,j;
for (i=1;i<=n;i++)
{
for (j=1;j<=m;j++)
in>>M[i][j];
}
Back(1);
out<<Max<<"\n";
out.close();
in.close();
return 0;
}