Cod sursa(job #23017)

Utilizator pocaituDavid si Goliat pocaitu Data 27 februarie 2007 22:13:20
Problema Elimin Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<fstream.h>
int mat[500][1000],m,n,r,c;

void rast()
{int i,j,aux,ma[500][1000];
 for(i=1;i<=n;i++)
  for(j=1;j<=m;j++)
	ma[i][j]=mat[j][i];
 aux=n;n=m;m=aux;
 aux=r;r=c;c=aux;
 for(i=1;i<=m;i++)
   for(j=1;j<=n;j++)
	mat[i][j]=ma[i][j];
 }


int main()
{int long aux,i,j,nr,s[1000],k,k1,max=0;
 ifstream f("elimin.in");
 f>>m>>n>>r>>c;

 for(i=1;i<=m;i++)
  for(j=1;j<=n;j++)
   f>>mat[i][j];
 if(m>n)
  rast();

 for(i=1;i<(1<<m);i++)
   {for(j=0,nr=0;j<m;j++)
	 if(i&(1<<j))
	   nr++;
	if(nr==r)
	  {memset(s,0,sizeof(s));
	   for(j=0,nr=0;j<m;j++)
		 if(!(i&(1<<j)))
		   for(k=1;k<=n;k++)
			  s[k]+=mat[j+1][k];
	   for(k=1;k<=n;k++)
		 for(k1=k+1;k1<=n;k1++)
		  if(s[k]<s[k1])
			{aux=s[k];s[k]=s[k1];s[k1]=aux;}
	   for(k=1,nr=0;k<=n-c;k++)
		 nr+=s[k];
	   if(nr>max)
		 max=nr;
	   }
	}

 ofstream g("elimin.out");
 g<<max;
 g.close();
 return 0;
 }