Pagini recente » Cod sursa (job #1289140) | Cod sursa (job #1070192) | Cod sursa (job #1191874) | Cod sursa (job #1255820) | Cod sursa (job #1746857)
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
int sumaPeColoana[7400],matriceData[20][7400],vectorCombinari[7400],m,n,r,c,sumaMaxima;
void citireDateIntrare()
{
cin>>m>>n>>r>>c;
if(m<=n)
for(int i=1; i<=m; i++)
for(int j=1; j<=n; j++)
cin>>matriceData[i][j];
else
{
for(int i=1; i<=m; i++)
for(int j=1; j<=n; j++)
cin>>matriceData[j][i];
swap(m,n);
swap(r,c);
}
}
void determinareSuma()
{
int sumaProvizorie=0;
for(int j=1; j<=n; j++)
sumaPeColoana[j]=0;
for(int j=1; j<=n; j++)
{
for(int i=1; i<=m-r; i++)
sumaPeColoana[j]+=matriceData[vectorCombinari[i]][j];
sumaProvizorie+=sumaPeColoana[j];
}
sort(sumaPeColoana+1,sumaPeColoana+n+1);
for(int i=1; i<=c; i++)
sumaProvizorie-=sumaPeColoana[i];
if(sumaMaxima<sumaProvizorie)
sumaMaxima=sumaProvizorie;
}
void generareCombinari(int x)
{
if(x==m-r+1)
{
determinareSuma();
return;
}
for(int i=vectorCombinari[x-1]+1; i<=n; i++)
{
vectorCombinari[x]=i;
generareCombinari(x+1);
}
}
int main()
{
freopen("elimin.in","r",stdin);
freopen("elimin.out","w",stdout);
citireDateIntrare();
generareCombinari(1);
cout<<sumaMaxima;
return 0;
}