Cod sursa(job #119022)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 29 decembrie 2007 10:48:42
Problema Elimin Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <fstream.h>
#include <values.h>

ifstream fin("elimin.in");
ofstream fout("elimin.out");
long max=MAXINT;
int n,m,l,c,auxc,auxl,lin[1000],col[1000],a[100][100];

void citire()
{
   fin>>n>>m>>l>>c;
   for (int i=0;i<n;i++)
      for (int j=0;j<m;j++)
	 fin>>a[i][j];
   fin.close();
}

void suma()
{
 long S=0;
   for (int i=0;i<n;i++)
       if (lin[i]==1)
	  for (int j=0;j<m;j++)
	      S+=a[i][j];

   for (int k=0;k<m;k++)
      if (col[k]==1)
	 for (int r=0;r<n;r++)
	    if (lin[r]==0)
	       S+=a[r][k];
 if (S<max)
    max=S;
}

void backc(int k)
{
    if (k==m)
    {  if (auxc==c)
       suma();
       return ;
    }
      col[k]=1;
      auxc++;
      backc(k+1);
      col[k]=0;
      auxc--;
      backc(k+1);
}

void backl(int k)
{
   if (k==n)
   {
     if (auxl==l)
	backc(0);
      return ;
   }

      lin[k]=1;
      auxl++;
      backl(k+1);
      lin[k]=0;
      auxl--;
      backl(k+1);
}

int main()
{
   citire();
   backl(0);
   long Su=0;
     for (int i=0;i<n;i++)
	for (int j=0;j<m;j++)
	    Su+=a[i][j];
     Su-=max;
       fout<<Su<<"\n";
       fout.close();
       return 0;
}