Cod sursa(job #118712)

Utilizator katakunaCazacu Alexandru katakuna Data 27 decembrie 2007 17:19:53
Problema Elimin Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.43 kb
//0001

#include<stdio.h>
int x,nr,i,j,c,n,i2,s,j2,r,m,k,l,max;
int v[100],v2[100],a[100][100],b[100][100],d[100][100];

int main(){

FILE *f=fopen("elimin.in","r");


fscanf(f,"%d%d%d%d",&n,&m,&r,&c);


for(i=1;i<=n;i++){

 for(j=1;j<=m;j++){
 fscanf(f,"%d",&a[i][j]);
 }

}
fclose(f);


int ma=0;

 for(i2=0;i2<=(1<<m)-1;i2++){
	nr=0;

	  for(j2=m-1;j2>=0;j2--){

	  v2[j2+1]=(i2>>j2)&1;

	  if(v2[j2+1]==1)nr++;

	  }

     if(nr==c){
     ma++;

       for(i=1;i<=m;i++){d[ma][i]=v2[i];
       }
     }

 }













 for(i=0;i<=(1<<n)-1;i++){
 nr=0;

   for(j=n-1;j>=0;j--){

    v[j+1]=(i>>j)&1;

    if(v[j+1]==1)nr++;

   }

    if(nr==r){

       /*for(i2=0;i2<=(1<<m)-1;i2++){
	nr=0;

	  for(j2=m-1;j2>=0;j2--){

	  v2[j2+1]=(i2>>j2)&1;

	  if(v2[j2+1]==1)nr++;

	  }

	     if(nr==c){*/


	 for(x=1;x<=ma;x++){


		for(k=1;k<=n;k++){
		  if(v[k]==1){

		     for(l=1;l<=m;l++){
		     b[k][l]=0;
		     }

		  }

		  else
		  for(l=1;l<=m;l++){
		  b[k][l]=a[k][l];
		  }

		}

		s=0;
		for(l=1;l<=m;l++){
		  if(d[x][l]==1){

		      for(k=1;k<=n;k++){
		      b[k][l]=0;

		      }
		  }
		  else
		  for(k=1;k<=n;k++){
		  //b[k][l]=b[k][l];
		  s+=b[k][l];
		  }

		}

	     if(s>max)max=s;

	     //}


	 }

    }

 }

 FILE *g=fopen("elimin.out","w");


 fprintf(g,"%d\n",max);

 fclose(g);

return 0;
}