Cod sursa(job #2076869)

Utilizator AndaionicaIonica Anda Maria Andaionica Data 27 noiembrie 2017 12:04:22
Problema Elimin Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
using namespace std;
ifstream f("elimin.in");
ofstream g("elimin.out");
int Min,n,m,c,r,i,j,S;
short int a[8001][8001],x[8001],y[8001],sl[8001],sc[8001];
void suma()
{
    int i,j;
    int s=0;
    for(i=1;i<=r;i++)
        s+=sl[x[i]];
    for(i=1;i<=c;i++)
        s+=sc[y[i]];
    for(i=1;i<=r;i++)
        for(j=1;j<=c;j++)
            s-=a[x[i]][y[j]];
    Min=min(Min,s);
}
void coloana(int k)
{
    int i;
    for(i=y[k-1]+1;i<=k+m-c;i++)
    {
        y[k]=i;
        if(k==c)
            suma();
            else
                coloana(k+1);
    }
}
void linie(int k)
{
    int i;
    for(i=x[k-1]+1;i<=k+n-r;i++)
    {
        x[k]=i;
        if(k==r)
            coloana(1);
            else
                linie(k+1);
    }
}
int main()
{
    f>>n>>m>>c>>r;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
        {
            f>>a[i][j];
            S+=a[i][j];
            sl[i]+=a[i][j];
            sc[j]+=a[i][j];
        }
    Min=S;
    linie(1);
    g<<S-Min;
    return 0;
}