Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Istoria paginii runda/infoo-9a | Rating Pescariu David (davidpescariu) | Cod sursa (job #2017052)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("elimin.in");
ofstream fout("elimin.out");
int n,m,r,c,maxim,a[21][8000],cl[8000],aux,pre;
bool st[8000];
void verificare()
{
int i,j,sum=0;
for(i=1;i<=m;i++)
cl[i]=0;
for(i=1;i<=n;i++)
{
if(st[i]==0)
{
for(j=1;j<=m;j++)
{
cl[j]=cl[j]+a[i][j];
}
}
}
sort(cl+1,cl+m+1);
for(i=c+1;i<=m;++i)
sum+=cl[i];
if(sum>maxim)
maxim = sum;
}
void Back(int t,int pre)
{
int i;
if(t>r) verificare();
else
for(i=pre;i<=n;++i)
{
st[i]=1;
Back(t+1,i+1);
st[i]=0;
}
}
int main()
{
fin >> n >> m >> r >> c;
int i,j;
maxim=-32000; /// -1000000...;
if(n>m)
{
aux=n;
n=m;
m=aux;
aux=r;
r=c;
c=aux;
for(i=1;i<=m;++i)
{
for(j=1;j<=n;++j)
fin >> a[i][j];
}
}
else
{
for(i=1;i<=n;++i)
{
for(j=1;j<=m;++j)
fin >> a[i][j];
}
}
Back(1,1);
fout << maxim;
return 0;
}