Cod sursa(job #402561)

Utilizator ProcopliucProcopliuc Adrian Procopliuc Data 23 februarie 2010 22:41:36
Problema Elimin Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
# include <fstream.h>
ifstream f ("elimin.in");
ofstream g ("elimin.out");
int a[100][100],b[100],i,j,aux,smax=-10000,q,w,n,m,s[100],sf,z,k,kk;

 
  void poz (int i,int j)
  {
	  int ii=i,jj=j,ss=1,ss2=0;
	  
	  while (ii<jj)
	  {
		  if (s[ii]>s[jj])
		  {
			  aux=s[ii];
			  s[ii]=s[jj];
			  s[jj]=aux;
			  
			  if (ss==1)
				 { 
					 ss=0;
			         ss2=-1;
				 }
			  else
			  {
				  ss=1;
				  ss2=0;
			  }
		  }
		  ii=ii+ss;
		  jj=jj+ss2;
		  kk=ii;
	  }
  }





   void ord (int i,int j)
   {  
	   if (i<j)
		{
	        poz (i,j);
	   
	       ord (1,kk-1);
	       ord (kk+1,m);
        }
   }








void xyz ()
 {int i,j;
	 
	 sf=0;
	 
	 for (k=1;k<=m;k++)
	 {z=0;
		 for (j=1;j<=n;j++)
			 z=z+a[j][k];
		 for (j=1;j<=q;j++)
			 z=z-a[b[j]][k];
		 sf=sf+z;
		 s[k]=z;
	 }
	 
	 ord (1,m);
	 
	 
 for (i=1;i<=w;i++)
	 sf=sf-s[i];
 if (smax<sf)
	 smax=sf;
 }
 
 
 
 
 
 
 
 

  void back (int i)
  {
	  int val;
	  for (val=b[i-1]+1;val<=n;val++)
	  {
		  b[i]=val;
		  if (i==q)
		  xyz ();
		  if (i<q)
			  back (i+1);
	  }
  }






int main ()
{
	f>>n>>m>>q>>w;
	for (i=1;i<=n;i++)
		for (j=1;j<=m;j++)
			f>>a[i][j];
		
		back (1);
		g<<smax;
}