Cod sursa(job #1888028)

Utilizator ajajajEuuuuu ajajaj Data 21 februarie 2017 21:29:26
Problema Elimin Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("elimin.in");
ofstream fout("elimin.out");
int n,m,i,j,SUM,sum,max1=-1,R,C,nr,N;
short a[100][100];
void BK(int R,int C,int n,int m,int SUM,int sum)
{ int i=0,j=0;
nr++;
        if(R>0 && n>0)
    {
        for(i=n;i>=1;i--)
        {
            sum=SUM;
            for(j=1;j<=m;j++)
            {a[0][j]+=a[i][j];
                SUM-=a[i][j];}
            BK(R-1,C,i-1,m,SUM,sum);
            SUM=sum;
            for(j=1;j<=m;j++)
            {a[0][j]=a[0][j]-a[i][j];}
        }
    }
    if(C>0 && m>0)
    {
        for(j=m;j>=1;j--)
        {
            sum=SUM;
            for(i=1;i<=N;i++)
            SUM=SUM-a[i][j];
            SUM+=a[0][j];
            BK(R,C-1,n,j-1,SUM,sum);
            SUM=sum;
        }
    }
    if(R==0 && C==0)
    {
    if(max1<SUM)
     max1=SUM;}
}
int main()
{
    fin>>n>>m>>R>>C;
    for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
    {fin>>a[i][j];
    SUM+=a[i][j];}
    sum=SUM;
    N=n;
    BK(R,C,n,m,SUM,sum);
    fout<<"max1="<<max1<<" nr="<<nr;
    return 0;
}