Pagini recente » Cod sursa (job #730641) | Cod sursa (job #934370) | Cod sursa (job #389444) | Cod sursa (job #1128597) | Cod sursa (job #2314760)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("elimin.in");
ofstream fout("elimin.out");
int frecv[1003],c,m,sum[1003],n,a[1003][1003],r,sol,i,aux[1003],j;
int backtracking(int k)
{
if(k>c)
{
for(int i=1;i<=m;i++)
{
sum[i]=0;
for(int j=1;j<=n;j++)
{
if(frecv[j]==0)//nu e inca utilizat
{
sum[i]=sum[i]+a[i][j];
}
}
}
sort(sum+1,sum+1+m);
int sum_aux=0;
for(int i=r+1;i<=m;i++)
{
sum_aux=sum_aux+sum[i];
}
sol=max(sol, sum_aux);
return sol;
}
else
{
for(i=aux[k-1]+1;i<=n-c+k;i++)
{
aux[k]=i;
frecv[i]=1;
backtracking(k+1);
frecv[i]=0;
}
}
}
int main()
{
fin>>m>>n>>r>>c;
if(m>=n)
{
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
fin>>a[i][j];
}
}
}
else
{
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
fin>>a[j][i];
}
}
swap(m,n);
swap(r,c);
}
sol = backtracking(1);
fout<<sol;
fin.close();
fout.close();
return 0;
}